从命令行运行jar时的ClassNotFoundException

从命令行运行jar时的ClassNotFoundException,jar,Jar,我不确定这个jar文件缺少什么,但当我尝试从命令行运行jar时,它无法加载主入口点: 这是包含我的应用程序的类和资源的目录。 C:\Users\hrh74\Documents\ABack up\NetBeansProjects\mavenfxedittableview\target\classes\org\openjfx\mavenfxedittableview 09/04/2020 08:48 PM <DIR> . 09/04/2020 08:48 P

我不确定这个jar文件缺少什么,但当我尝试从命令行运行jar时,它无法加载主入口点: 这是包含我的应用程序的类和资源的目录。

C:\Users\hrh74\Documents\ABack up\NetBeansProjects\mavenfxedittableview\target\classes\org\openjfx\mavenfxedittableview

09/04/2020  08:48 PM    <DIR>          .
09/04/2020  08:48 PM    <DIR>          ..
09/03/2020  04:24 PM             2,502 addressBookData.xml
09/02/2020  05:52 PM             9,562 Address_Book.png
09/02/2020  05:52 PM               859 birthdaystatistic.fxml
09/02/2020  05:52 PM             3,274 BirthdaystatisticController.class
09/02/2020  05:52 PM             3,224 DarkTheme.css
09/02/2020  05:52 PM             2,072 DateUtil.class
09/02/2020  05:52 PM             1,214 LocalDateAdapter.class
09/02/2020  05:52 PM             3,523 Person.class
09/02/2020  05:52 PM             4,535 personeditdialog.fxml
09/02/2020  05:52 PM             5,128 PersoneditdialogController.class
09/02/2020  05:52 PM             1,029 PersonListWrapper.class
09/02/2020  05:52 PM             6,412 personoverview.fxml
09/02/2020  05:52 PM             1,904 rootlayout.fxml
09/02/2020  05:52 PM             4,490 RootlayoutController.class
09/02/2020  05:52 PM             9,060 TableEditApp.class
09/02/2020  05:52 PM             6,812 TableVieweditController.class
              16 File(s)         65,600 bytes
               2 Dir(s)  57,686,331,392 bytes free
已成功创建app.jar。这是META-INF/MANIFEST.MF文件的内容。

Manifest-Version: 1.0
Created-By: 14.0.2 (Oracle Corporation)
Main-Class: TableEditApp.class
这是我的类路径,在开头有当前目录“.”。

.;C:\Users\hrh74\Documents\ABack up\NetBeansProjects\javalearning\build\classes;C:\Program Files\Java\jdk-14.0.2;C:\Program Files\Java\jdk-14.0.2\bin;C:\Program Files (x86)\Java\jre1.8.0_251\bin;C:\Program Files\Java\jdk-14.0.2\lib; 
当我列出jar文件的内容时,所有类都正确地打包在jar中。

C:\Users\hrh74\Documents\ABack up\NetBeansProjects\mavenfxedittableview\target\classes\org\openjfx>jar tvf app.jar
     0 Fri Sep 04 23:22:18 IRDT 2020 META-INF/
    98 Fri Sep 04 23:22:18 IRDT 2020 META-INF/MANIFEST.MF
  2502 Thu Sep 03 16:24:22 IRDT 2020 addressBookData.xml
  9562 Wed Sep 02 17:52:36 IRDT 2020 Address_Book.png
   859 Wed Sep 02 17:52:36 IRDT 2020 birthdaystatistic.fxml
  3274 Wed Sep 02 17:52:40 IRDT 2020 BirthdaystatisticController.class
  3224 Wed Sep 02 17:52:36 IRDT 2020 DarkTheme.css
  2072 Wed Sep 02 17:52:40 IRDT 2020 DateUtil.class
  1214 Wed Sep 02 17:52:38 IRDT 2020 LocalDateAdapter.class
  3523 Wed Sep 02 17:52:38 IRDT 2020 Person.class
  4535 Wed Sep 02 17:52:36 IRDT 2020 personeditdialog.fxml
  5128 Wed Sep 02 17:52:40 IRDT 2020 PersoneditdialogController.class
  1029 Wed Sep 02 17:52:40 IRDT 2020 PersonListWrapper.class
  6412 Wed Sep 02 17:52:36 IRDT 2020 personoverview.fxml
  1904 Wed Sep 02 17:52:36 IRDT 2020 rootlayout.fxml
  4490 Wed Sep 02 17:52:38 IRDT 2020 RootlayoutController.class
  9060 Wed Sep 02 17:52:38 IRDT 2020 TableEditApp.class
  6812 Wed Sep 02 17:52:38 IRDT 2020 TableVieweditController.class
最后,当我使用java–jar app.jar从命令行运行应用程序时,我得到ClassNotFoundException。

C:\Users\hrh74\Documents\ABack up\NetBeansProjects\mavenfxedittableview\target\classes\org\openjfx>java -jar app.jar
Error: Could not find or load main class TableEditApp.class
Caused by: java.lang.ClassNotFoundException: TableEditApp.class
据我所知,我试图遵守规范,所以我不知道为什么这不起作用。知道是什么导致了这个异常吗?
提前感谢。

我在上一篇评论中提到的HelloWorld.java中发现了一些有趣的东西。我放弃了使用“jar cvfe”,而是创建了一个文件名mymanifest.txt,并将该类的名称与主条目一起放置为“main class:org.me.HelloWorld”,后跟两行空行(根据规范)。我用“jar-cvmf”而不是“jar-cvfe”打包了这个罐子,它工作得很好。然后,我将相同的方法应用于我的应用程序jar创建,现在我得到的是一个链接错误,而不是ClassNotFoundException。也许,它与JavaFX库有关,我必须对此进行更深入的研究。总之,我怀疑“jar-cvfe”开关可能没有像Java教程中描述的那样工作。我以前在教程中发现过错误,这可能是另一个错误。


无论如何,谢谢大家的评论。

@-一匹没有名字的马:我删除了截图。我希望这样更好。在命名上有什么混淆吗?我看到您在命令中指定了
TableEditApp
,但在清单和错误消息中它是
EditTableApp
@takendarkk:hmmmm。。。。好问题,让我调查一下,然后再报告。谢谢。@takendarkk:我纠正了命名错误,现在是TableEditApp。然而,问题依然存在。事实上,我试图编写一个简单的HelloWorld.java,然后将其打包到Hello.jar中,主类指向org.me.HelloWorld,并将Hello.jar放在类路径中,但同样的ClassNotFoundException仍然存在。
C:\Users\hrh74\Documents\ABack up\NetBeansProjects\mavenfxedittableview\target\classes\org\openjfx>java -jar app.jar
Error: Could not find or load main class TableEditApp.class
Caused by: java.lang.ClassNotFoundException: TableEditApp.class