2015-06-30 2 views
1

Я построил проект Java в eclipse. Он отлично работает в пределах затмения. Я экспортировал его как банку раньше, и он отлично работает. Однако прошло немного времени с момента последнего экспорта. На этот раз, когда я экспортировал и нажал на банку, ничего не произошло.Экспорт jar из eclipse не будет работать

Запуск из командной строки показывает следующее сообщение об ошибке:

C:\>java -jar "C:\Users\Quinn\Desktop\think.jar" 
Exception in thread "main" java.lang.IllegalAccessException: Class org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader can not access a member of class think.Main with modifiers "public static" 

Что означает эта ошибка? Есть ли причины, почему это может произойти? Я не смог найти упоминания об этом в Интернете.

Большое спасибо.

EDIT: когда я распаковать баночку, содержимое выглядит следующим образом: enter image description here

манифест (в META-INF) выглядит следующим образом: (да, у него есть дополнительная пустая строка)

Manifest-Version: 1.0 
Rsrc-Class-Path: ./ substance-6.1.jar trident.jar 
Class-Path: . 
Rsrc-Main-Class: think.Main 
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 
+0

Я смущен относительно того, как класс eclipse 'org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader' задействован, когда вы используете это из командной строки. Вы не знаете, как это так? Кроме того, вы могли бы расстегнуть свою банку и показать нам структуру архива? – thatidiotguy

+0

Eclipse JDK и система jdk разные, я думаю, здесь. пожалуйста, проверьте – Bhupi

+0

Честно говоря, я тоже смущен об этом. Я никогда не указывал, чтобы использовать что-либо в org.eclipse явно. Я сейчас работаю над распаковкой банок и скоро это сделаю – B1CL0PS

ответ

1

JarRsrcLoader включен в Jar при использовании Export> Runnable JAR file. Он имеет дело с вложенными файлами jar в банке.

JarRsrcLoader пытается найти свой main метод think.Main, но не может найти метод, называемый main, который public static.

0

Ну, это неловко. Оказывается, хотя мой основной метод был public static, содержащий класс не был общедоступным. Все теперь исправлено :)

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