如何在创建bat文件时解决java.lang.NoClassDefFoundError?

时间:2015-05-17 14:41:28

标签: java batch-file

我正在尝试运行bat文件,该文件应该启动我用java编写的restCRUD服务器。项目只包含一个主要方法,因此我的浴室文件如下所示:

java -jar TaxAppWebserver.jar

暂停

问题是,当我运行bat文件时,我得到java.lang.NoClassDefFoundError。

Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Persistence
        at facade.FacadeLogic.<init>(FacadeLogic.java:17)
        at restCRUD.HandlerLogger.<init>(HandlerLogger.java:14)
        at restCRUD.RestFileServer.run(RestFileServer.java:22)
        at restCRUD.RestFileServer.main(RestFileServer.java:36)
Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence
        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)

FacadeLogic.java的第17行:

 EntityManagerFactory emf = Persistence.createEntityManagerFactory("TaxAppWebserverPU");

有人能给我一些错误的线索吗?

2 个答案:

答案 0 :(得分:0)

使用添加到MANIFEST.MF文件中类路径的缺少jar重建jar文件。 Eclipse等IDE可以在创建可执行jar文件时自动添加这些文件

Class-Path: javax.persistence.jar

答案 1 :(得分:0)

我通过在项目目录中创建lib文件夹并将所有外部库复制到此文件夹来解决了这个问题。另外,我必须更改我的bat文件

java -cp TaxAppWebserver.jar restCRUD.RestFileServer

以便知道主要方法的位置。