Я пытаюсь экспортировать мою программу шашек из Eclipse в исполняемый файл jar. Я получаю файл jar, но он не запускается ... Это дает мне загадочные сообщения об ошибках в отношении классов, которые не найдены. Не является ли смысл файла jar, что он содержит все классы, в которых он нуждается? Я понятия не имею, что теперь делать.runnable jar file not runnable
Вот что я получаю, когда я бег банки:
D:\Dokumente\workspace>java -jar Dame.jar
Exception in thread "main" java.lang.NoClassDefFoundError: [[Lcheckers/Board$EmptySquare;
at checkers.Board.<init>(Board.java:63)
at checkers.Board.<init>(Board.java:49)
at checkers.GameUI.main(GameUI.java:105)
Caused by: java.lang.ClassNotFoundException: checkers.Board$EmptySquare
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
Может быть, это помогает знать, что EmptySquare
является внутренним классом Board
? В чем может быть проблема? Я попробовал как «извлечь необходимые библиотеки», так и «пакетные библиотеки» в мастере экспорта.
Я также попытался с помощью jar
из командной строки, но он не работает, как хорошо. Вот что я сделал:
D:\Dokumente\workspace\Dame\bin\checkers>jar cvfe Dame.jar checkers.GameUI *.class
D:\Dokumente\workspace\Dame\bin\checkers>java -jar Dame.jar
Fehler: Hauptklasse checkers.GameUI.class konnte nicht gefunden oder geladen werden
(error: main class checkers.GameUI.class could not be found or loaded)
Если я уеду из имени пакета для основного класса (GameUI
), он также не работает:
D:\Dokumente\workspace\Dame\bin\checkers>jar cvfe Dame.jar GameUI *.class
D:\Dokumente\workspace\Dame\bin\checkers>java -jar Dame.jar
Exception in thread "main" java.lang.NoClassDefFoundError: GameUI (wrong name: checkers/GameUI)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Нет подсказки.
Содержимое файла фляга:
D:\Dokumente\workspace\Dame\bin\checkers>jar tvf Dame.jar
0 Thu Jan 09 01:05:26 CET 2014 META-INF/
88 Thu Jan 09 01:05:26 CET 2014 META-INF/MANIFEST.MF
994 Thu Jan 09 00:14:30 CET 2014 Board$1.class
1840 Thu Jan 09 00:14:30 CET 2014 Board$EmptySquare.class
447 Thu Jan 09 00:14:30 CET 2014 Board$GamePiece.class
4051 Thu Jan 09 00:14:30 CET 2014 Board$Piece.class
4399 Thu Jan 09 00:14:30 CET 2014 Board$Queen.class
8381 Thu Jan 09 00:14:30 CET 2014 Board.class
2946 Thu Jan 09 00:14:30 CET 2014 Checkers.class
2708 Thu Jan 09 00:14:30 CET 2014 CheckersAB.class
4202 Thu Jan 09 00:14:30 CET 2014 CheckersABT.class
2464 Thu Jan 09 00:14:30 CET 2014 CheckersMinMax.class
1324 Thu Jan 09 00:14:30 CET 2014 CheckersPieces.class
951 Thu Jan 09 00:14:30 CET 2014 GameState.class
804 Thu Jan 09 00:14:30 CET 2014 GameUI$1.class
663 Thu Jan 09 00:14:30 CET 2014 GameUI$2.class
2535 Thu Jan 09 00:14:30 CET 2014 GameUI.class
739 Thu Jan 09 00:14:30 CET 2014 GUIBoard$1.class
6069 Thu Jan 09 00:14:30 CET 2014 GUIBoard.class
3776 Thu Jan 09 00:14:30 CET 2014 Move.class
607 Thu Jan 09 00:14:30 CET 2014 MoveComparator.class
610 Thu Jan 09 00:14:30 CET 2014 NodeVal.class
1078 Thu Jan 09 00:14:30 CET 2014 PlayCheckersAB.class
356 Thu Jan 09 00:14:30 CET 2014 PlayCheckersABT.class
357 Thu Jan 09 00:14:30 CET 2014 PlayCheckersMM.class
2466 Thu Jan 09 00:14:30 CET 2014 PlayTournament.class
1183 Thu Jan 09 00:14:30 CET 2014 Square.class
241 Thu Jan 09 00:14:30 CET 2014 ZeroSumGame.class
Все классы в одном пакете? У вас есть несколько классов с методом 'main()'? –
@ pm77: только что обновил сообщение. все классы находятся в пакетных «шашках», за исключением, конечно, некоторых libs (apache commons). Существует более одного файла класса с основным методом, но я сказал Eclipse, что один из них правильный. Я также попробовал это с помощью jar-команды. Не повезло. – jackthehipster
Показать [манифест] JAR [http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html). –