Как предотвратить неявную компиляцию Java, когда класс существует в пути к классам?

Допустим, у меня есть два класса (Боб и Том), такие, что Боб использует Тома, но Том не требует Боба. Оба эти файла расположены в одной структуре каталогов.

public class Bob {
  public static void main(String[] args) {
    System.out.println(Tom.MESSAGE);
  }
}

public class Tom {
  public static String MESSAGE = "Hello World";
}

Если я попытаюсь скомпилировать Bob обычным способом, я также смогу заставить его неявно скомпилировать Tom.java, поскольку он распознается как зависимость от Bob.java. Это прекрасно работает.

Но теперь предположим, что я хочу поместить Тома в JAR-файл. Поэтому я собираю Tom.javaи помещаю результаты в JAR-файл: libTom.jar. Теперь я компилирую с classpath, указывающим на libTom.jar. К сожалению, компилятор видит файл Tom.javaи вызывает его компиляцию вместо использования класса из libTom.jar. Есть ли способ заставить компилятор пропустить неявную конструкцию Tom.java, если класс найден в пути к классам?

Я признаю, что этот пример довольно надуманный. Будьте уверены, что существует более сложный и менее надуманный вариант использования, связанный с этой проблемой. Спасибо.

6
задан user2428118 1 June 2012 в 20:22
поделиться