1

当我将(工作的)java 转换为可执行的 jar 文件时,我遇到了问题。

我编写了一个非常简单的数字排序程序。它分布在两个文件(TreeGui.java 和 SortTree.java)中,每个文件或多或少都按照他们所说的进行。TreeGui 有一个输入文本区域、一个按钮和一个输出区域。按下按钮将输入文本传递给 SortTree,它会返回显示在输出框中的排序良好的数字。

当我编译每个文件,然后运行 ​​TreeGui 时,一切正常

javac TreeGui.java
javac SortTree.java
java TreeGui

...运行一切可爱。

现在,当我尝试将这些类放入 jar 文件中时,我不断遇到同样的问题。我有一个清单(TreeGuiManifest.txt),其中包含以下内容(和一个空白的新行):

Main-Class: TreeGui

但是当我把所有东西放在一起时:

jar cmf TreeGuiManifest.txt TreeGui.jar TreeGui.class SortTree.class

我遇到了问题。无论我是通过选择 jar 文件直接运行它还是通过在控制台中使用“java -jar TreeGui.jar”来运行它,程序都可以正常加载,但是在按下按钮的那一刻,它会抛出一个像这样开始并继续运行的整个字符串很长的路要走:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: SortTree TreeNode  
    at SortTree.treeInsert(SortTree.java:35)
    at SortTree.main(SortTree.java:24)
    at TreeGui.actionPerformed(TreeGui.java:66)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

等等等等。显然很难在 SortTree 代码中找到按下 TreeGui 中的按钮所需的元素,但我不确定我能做些什么来让它工作。

我错过了一些非常明显的东西吗?我正在使用各种导入的 java.utils.*;等等,我在制作我的 jar 文件时是否必须提及它们?谢谢你的帮助。

(我没有在这里粘贴程序的实际代码的唯一原因是,当它不是Jar 文件时,它一切正常......不过,如果有必要,我会很乐意添加它们)

4

0 回答 0