我正在Win 7(64位),Indigo / Java 1.6中开发一个跨平台的RCP应用程序,用Tycho构建产品。
虽然应用程序在eclipse中运行配置运行正常,并且Win x_86_64构建运行良好,但我在xubuntu上都遇到以下错误(使用OpenJDK Java 6运行时(1.6.0_24)和Mac OS X(1.6) .0_35)。
错误(在Linux上)看起来像这样(运行java myprogram
):
Exception in thread "main" java.lang.NoClassDefFoundError: myprogram
Caused by: java.lang.ClassNotFoundException: myprogram
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: myprogram. Program will exit.
我确定我之前遇到过这种情况,我认为这是愚蠢的事情(这种情况发生在AFAIK之前的Windows上,并且由于某种原因重新安装Java修复了它)。但是,在这种情况下,我认为必须使用构建/目标平台/ Tycho设置。
负责跨平台构建的我父POM的部分看起来不够吉利:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<resolver>p2</resolver>
<pomDependencies>consider</pomDependencies>
<!-- configure the p2 target environments for multi-platform build -->
<environments>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86</arch>
</environment>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
</environments>
</configuration>
</plugin>
有没有人知道为什么这可能不起作用? 非常感谢!
答案 0 :(得分:2)
这不是您运行Eclipse RCP应用程序的方式。
您需要使用相应的原生启动器启动它,或使用java -jar plugins/org.eclipse.equinox.launcher_(yourVersion).jar
(请参阅this documentation)以及可能的其他参数来选择application。
此外,您需要确保在应用程序中有Equinox需要启动的软件包。您可以在产品中添加功能org.eclipse.rcp
来完成此操作。