我有一个使用表单的项目,它编译并运行得很好,
但是当用生成的蚂蚁它不运行
我的 ant 文件有java2任务我将所需的 jar 添加到我的 lib 文件夹中
<property name="javac2.home" value="lib/idea"/>
<path id="javac2.classpath">
<pathelement location="${javac2.home}/javac2.jar"/>
<pathelement location="${javac2.home}/jdom.jar"/>
<pathelement location="${javac2.home}/asm.jar"/>
<pathelement location="${javac2.home}/asm-commons.jar"/>
<pathelement location="${javac2.home}/jgoodies-forms.jar"/>
</path>
<taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>
<taskdef name="instrumentIdeaExtensions" classname="com.intellij.ant.InstrumentIdeaExtensions" classpathref="javac2.classpath"/>
但是当我运行我的程序时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/intellij/uiDesigner/core/Spacer
Caused by: java.lang.ClassNotFoundException: com.intellij.uiDesigner.core.Spacer
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
我注意到从 Idea 编译的版本在输出文件夹中有一些类(缺少什么),而 ant 生成的版本没有这些类。
编辑:我从下面实现了解决方案,这意味着我修改了我的 ant 构建以将 forms_rt.jar 的内容提取到我的输出文件夹
<unjar src="${javac2.home}/forms_rt.jar" dest="${webserver.output.dir}">
<patternset>
<include name="**/*.class"/>
</patternset>
</unjar>
您需要将 IDEA_HOME\redist 中的 forms_rt.jar 包含到应用程序的类路径中,方法是通过清单或从该 jar 中解压类并将它们与应用程序的最终 jar 打包在一起。
当您从 IDEA 进行编译时,它会自动将所需的类复制到输出(它通过“设置”|“GUI 设计器”中的选项进行控制)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)