Cra*_*lus 4 java command-line netbeans jar executable-jar
我在NetBeans6.9.1中有一个项目.它在IDE内部工作正常.但是当我尝试运行jar时,NetBeans已经在dist目录下自动创建了,我得到了项目中的类的NoClassDefFoundError.我究竟做错了什么?我应该使用Ant还是其他东西(不知道Ant)在eclipse中我做了一个"create runnable jar",jar运行没有问题.NetBeans中有相应的东西吗?
更新:在dist/myJar中,我解压缩了jar,在清单中,我的项目的当前路径和根路径都丢失了.我手动添加它们,并从命令行重新创建jar.它有效.但是为什么NetBeans不会在jar的manifest的类路径中添加这些.我不明白
更新2我发现了问题.我认为这是一个严重的NetBeans错误.我已经完成了重构,并将包名称从myPackage.model更改为mypackage.model.但是NetBeans并没有正确地做到这一点.它确实将包的名称更改为mypackage,如树导航器中所示,但文件中的包名仍为myPackage.该项目在IDE内部执行的罚款,没有报告错误(尽管所有的类被声明为属于我的P ackage和他们在我的树p ackage),但是当我试图运行dist目录我里面的罐子得到了一个没有找到的例外.今天我注意到这堂课被报道为我的P.ackage/model而不是我的p ackage/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>
Run Code Online (Sandbox Code Playgroud)
所以对于Maven来说,这是一个两步的事情:
static main(..)要运行的方法的主类).如果您正在使用Ant,可能需要查看此博客文章.