来自netbeans 6.9.1的java runnable jar
作者:互联网
我在NetBeans6.9.1中有一个项目.
它在IDE内部工作正常.
但是当我尝试运行jar时,NetBeans已经在dist目录下自动创建,我得到一个NoClassDefFoundError
对于我的项目中的类.我究竟做错了什么?我应该使用Ant还是其他东西(不知道Ant)
在eclipse中我做了一个“创建可运行的jar”,jar运行没有问题. NetBeans中有相应的东西吗?
更新:在dist / myJar中,我解压缩了jar,在清单中,我的项目的当前路径和根路径都丢失了.我手动添加它们,并从命令行重新创建jar.它有效.但是为什么NetBeans不会在jar的manifest的类路径中添加这些.我不明白
更新2我发现了问题.我认为这是一个严重的NetBeans错误.我已经完成了重构,并将包名称从myPackage.model更改为mypackage.model.但是NetBeans并没有正确地做到这一点.它确实将包的名称更改为mypackage,如树导航器中所示,但文件中的包名仍为myPackage.
程序在IDE中执行正常并且没有报告错误(虽然所有类都声明属于myPackage并且在树中它们在mypackage下)但是当我尝试在dist目录中运行jar时我得到了一个类而不是发现异常.今天我注意到该类被报告为myPackage / model而不是mypackage / model.我查看了类,重构完全搞定了一切.我手动将包名从myPackage中的类名更改为mypackage,并更正了所有导入(导入myPackage).这是一个已知的NetBeans问题????
谢谢
解决方法:
使用NetBeans,您的Java项目将基于Maven或Ant.你想要做的是创建一个包含所有依赖项的“胖”jar.对于Maven,您可以将以下行添加到您的pom中以实现:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>package.and.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
所以对于Maven来说,这是一个两步的事情:
>你必须告诉Maven生成一个“阴影”(包括依赖)jar,
>并且您必须指定主类(包含要运行的静态main(..)方法的主类).
如果您正在使用Ant,您可能需要查看this blog post.
标签:java,command-line,executable-jar,jar,netbeans 来源: https://codeday.me/bug/20190610/1212656.html