Невозможно запустить файл JAR (созданный в Eclipse) - PullRequest
1 голос
/ 27 апреля 2010

Я ненавижу начинать пост с этим, но я новичок в Java ... Я следовал этому руководству , чтобы создать сервер сокетов (мины в Eclipse) Я могу запустить сервер в Eclipse, все хорошо. Но когда я пытаюсь экспортировать проект, я не могу понять, как его запустить. Я получаю эту ошибку (она зависит от того, как я ее запускаю)

Exception in thread "main" java.lang.NoClassDefFoundError: xsocketserver/Main
Caused by: java.lang.ClassNotFoundException: xsocketserver.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

Я читал, что эта проблема связана с заданными путями классов. Я пробовал следующее:

java -cp libs/xSocket-2.8.12.jar xsocketserver.Main
java -jar xSocketServer.jar    
java -classpath xSocketServer:xSocketServer/libs/xSocket-2.8.12.jar xsocketserver.Main

плюс многие другие. Структура файла в JAR выглядит следующим образом:

xSocketServer.jar
    -> xsocketserver
        -> Main.class
        -> xSocketDataHandler.class
    -> META-INF
        -> MANIFEST.MF
    -> libs
        -> xSocket-2.8.12.jar

Кстати, я попытался добавить свой собственный файл манифеста, который содержит Class-Path, но когда я проверяю его, он всегда читает:

Manifest-Version: 1.0
Main-Class: xsocketserver.Main

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

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

Я не верю, что jar-файл может включать в себя другой jar (так как вы включили xSocket-2.8.12.jar). Если xSocket - ваш собственный код, пусть он будет включен непосредственно во «внешний» jar.

Выезд http://www.velocityreviews.com/forums/t143595-jars-containing-jars.html а также Classpath, включая JAR в JAR

В противном случае это выглядит правильно для меня. Убедитесь, что вы не пытаетесь запустить старую / устаревшую версию банки. (Удалите банку и убедитесь, что Eclipse экспортирует новую.)

Как вы экспортируете файл .jar из eclipse? Сгенерированный jar-файл обычно будет основан на одной из ваших конфигураций запуска. Убедитесь, что вы используете тот, который вы используете, когда он работает от затмения.

Если вы еще не попробовали его, попробуйте выполнить действия (перечисленные на сайте ниже)

http://forums.sun.com/thread.jspa?threadID=5358121

1-Щелкните правой кнопкой мыши по вашему проекту и выберите опцию экспорта. Откроется окно экспорта.

2-Выберите опцию jar-файл из всплывающего окна, которое будет в опции java окна.

3 - После выбора опции JarFile появится новое окно.

4-Выберите пункт назначения для экспорта в ваш файл jar и нажмите «Далее».

5-После нажатия на следующий новый экран, который вы увидите, нажмите кнопку «Далее» еще раз.

6-Теперь вы увидите новый экран с именем поля в качестве «Основного класса» для поиска вашего основного класса appliaction.main, который имеет метод main.

7-Теперь выберите финиш.

0 голосов
/ 22 мая 2010

У меня была похожая проблема, и ваша может быть, а может и не быть связана ...

Файл манифеста Jar должен быть в формате UTF-8. Я использовал блокнот Windows, и это не сработало. Когда я заново создал файл манифеста с другим редактором, он работал нормально.

Я предполагаю, что eclipse создаст файлы UTF-8, но я не уверен, что он будет автоматически конвертироваться, если они не в этом формате

Если вы использовали другой редактор для создания первой версии манифеста, попробуйте удалить файл manifest.mf и заново создать его внутри eclipse.

John

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...