У меня есть это приложение, которое вы можете запустить в пакетном режиме с макросами Java. У меня есть mymacro.java
, который использует myjar.jar
. Для простоты я поместил их все в тот же каталог, из которого запускаю приложение, поэтому classpath равен "./myjar.jar"
.
Команда для запуска приложения:
theapplication -classpath "./myjar.jar" -batch mymacro.java
, где тег -classpath
делает то, что объявляет, то есть переопределяет путь к классам. Теперь это нормально работает на моем ПК с Windows XP. Тем не менее, я получаю NoSuchMethodError
при запуске точно такой же вещи в кластере Linux.
java.lang.NoSuchMethodError:
com.foo.bar.baz.theMethod(Ljava/lang/String;Ljava/lang/String;)I
Я не могу понять это. Тот же .java, тот же .jar, тот же theMethod
. Путь к классам не может быть проще. Другие методы в myjar.jar
вызываются без ошибок. Что может быть не так?
Кстати, я установил переменную окружения CLASSPATH
равной "."
на обеих машинах, чтобы исключить любые конфликты.
EDIT
Вывод java -version
на моем ПК с Windows XP:
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)
В кластере Linux:
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)