2013-11-12 3 views
0

Мой главный код имеет два класса и основной имеет две ссылкизатмение выполнить файл JAR работать на Linux машине

LookupService citylookup = new LookupService("D://GeoLiteCity.dat"... 
FileReader fr =new FileReader("d:\\IP.txt"); 

экспортировать их в исполняемый файл банку, и я получаю D://testIP.jar и D://testIP_lib/reference libraries...jar

Я бегу java -jar testIP.jar и это работает.

Однако я пересмотреть мое обращение к Linux машина путь например: /home/admin/GeoLiteCity.dat и /home/admin/IP.txt и двигаться textIP.jar и testIP_lib и GeoLiteCity.dat IP.txt к /home/admin/ Я бегу java -jar testIP.jar снова я получаю ошибку

Exception in thread "main" java.lang.NoClassDefFoundError: com/maxmind/geoip/LookupService 
    at testIP.CountryLookupTest.main(CountryLookupTest.java:18) 

проверить они ява 1.7..версия Я не знаю, где я должен был настроить? Спасибо.

ответ

2

Звучит как разница между классами между двумя средами. Проверьте переменную среды CLASSPATH в обеих средах и проверьте запись Class-Path в файле MANIFEST.MF в банке. Я подозреваю, что Eclipse построил банку с помощью записи Class-Path на базе Windows в файле манифеста внутри банки.

+1

Вы можете просмотреть файл манифеста, используя любой zip-файл, например Ark на Linux. Он находится внутри папки «META-INF» в банке. –

+0

Хорошая точка - на Linux вы можете использовать 'unzip -p testIP.jar META-INF/MANIFEST.MF' для сброса файла манифеста. –

+0

Да, мне нужно сначала проверить проверку класса, спасибо, Робин, чтобы ответить на мой вопрос и улучшить мою уродливую страницу. – louis

1

Если это поможет.

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html

Вы бы посмотреть, как использовать путь класса в среде Linux.

+0

Это должно не так, однако необходимо, потому что исполняемый файл jar должен содержать свой собственный класс-путь (я предполагаю). –

+0

true, если файл манифеста корректно обновляется, а баны зависимости заключены в самой банке – Acewin

+0

. Не нужно, чтобы баны зависимости были внутри банки. –

Смежные вопросы