当前位置: 首页 > 知识库问答 >
问题:

runnable jar文件不可运行

邢杰
2023-03-14

我正在尝试将我的checkers程序从Eclipse导出到一个可运行的jar文件中。我得到一个jar文件,但它不运行。。。它给了我关于未找到的类的神秘错误消息。jar文件的意义不在于它包含了它所需要的所有类吗?我不知道现在该做什么。

这是我运行罐子时得到的:

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

知道EmptySquareBoard的一个内部类可能会有所帮助?有什么问题吗?我在导出向导中尝试了“提取所需库”和“打包所需库”。

我还尝试从命令行使用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)

没有线索。

jar文件的内容是:

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

共有1个答案

夹谷阳夏
2023-03-14

好的,我找到了答案。在posteclipse不编译项目时,有人建议切换到一个新的工作区。我这样做是因为除了神秘的非工作Jar文件之外,Eclipse也不再构建我的java文件。我切换到一个新的工作区,重新导入项目,瞧,导出的jar文件是可以运行的!

感谢你的努力,特别是对迪瓦诺夫!

 类似资料:
  • 我想知道如何在Eclipse中的源代码包(即/src/resources/images/或/resources/images/)内部或外部的资源文件夹中创建一个具有资源(图片、PDF)的可运行JAR。目前,我的资源在我的eclipse项目的source文件夹中,但我也在包中的它自己的文件夹中尝试过。该程序在eclipse中构建和执行得很好,但当我将其导出为可运行的jar时,在桌面上运行时,我总是得

  • 我有一个java项目。我想把它导出到可运行的jar文件。 我用eclipse来做这件事。 但当我运行创建的jar文件时,我会收到(系统找不到指定的路径)。 如何在任何地方导出文件夹以运行success jar文件?

  • 终端中使用lldb运行可执行文件 进入lldb环境, 在终端内输入lldb回车 lldb 使用file命令, 将可执行文件包装成一个target (lldb) file test Current executable set to '/Users/shenyj/Documents/CodeForTest/staticOCLib/test' (x86_64). 运行可执行文件, 在刚刚的l

  • 我在1-2年前用libGDX做了一个游戏,我可以在eclipse上运行它,它很有效。当我想导出jar文件时,我转到Export-Runnable jar file-这里我选择package required libraries并导出它。

  • 所以一切都很好,就像2到3周前一样,突然我所有的jar文件都无法通过双击打开 我检查了我的注册表,但一切正常,关联的. jar应用程序可以使用javaw运行,但我仍然无法双击运行可执行的. jar文件 我可以用javaw -jar文件名在cmd中运行它们.jar但它不适用于我的世界,我不能用那个cmd运行我的世界,我想让它,所以每个可执行文件.jar文件都可以打开双击 我的 java 命令在 cm

  • 问题内容: 我正在构建一个Swing应用程序,功能的一部分应该是视觉和听觉上(使用Mary TTS)处理和输出一些文本。我需要一些有关GUI和文本处理类进行通信的最佳方式的建议。 GUI类是JPanel的子类。在其中,我有一个实现Runnable的类,称为LineProcesser,它准备将要分发给音频播放器的文本。我正在使用线程执行器将其保留在EDT之外(这可能不是最好的方法,但它似乎达到了我追