我在使用控制台和/或Ant运行Java应用程序时遇到了一些麻烦.我知道很多启动问题与类路径没有设置或设置不正确有关,虽然我很确定我设置正确,所以我的搜索只产生了结果.
以下是我的应用程序的一般设置:类在包模型,视图和控制器中.controller.Controller是主方法的类.我使用objectdb作为我的JPA提供程序.
我正在使用Ant来编译我的应用程序.
编译之后,我可以使用以下脚本从ant运行我的应用程序:
<target name="run" description="default build process">
<java fork="true" classname="${main-class}">
<classpath>
<path refid="classpath" />
</classpath>
</java>
</target>
Run Code Online (Sandbox Code Playgroud)
其中$ {main-class}是controller.Controller和classpath由/ lib和/ dist文件夹组成(应用程序的jar文件被编译为/ dist)
现在,我尝试了所有的.jar文件复制从/ lib和/ DIST到一个单独的文件夹,并运行他们java -jar cooking.jar -cp .导致
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Persistence
at model.jpa.JPAModelFactory.<init>(JPAModelFactory.java:28)
at model.jpa.JPAModelFactory.<init>(JPAModelFactory.java:24)
at controller.Controller.<init>(Controller.java:59)
at controller.Controller.main(Controller.java:116)
Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence
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)
... 4 more
Run Code Online (Sandbox Code Playgroud)
所以我尝试了ant并略微修改了上面的构建目标:
<target name="run2" description="default build process">
<java fork="true" …Run Code Online (Sandbox Code Playgroud)