我正在 Win 7(64 位)、Indigo/Java 1.6 中开发跨平台 RCP 应用程序,使用 Tycho 构建产品。
虽然应用程序在 eclipse 中的运行配置中运行良好,并且 Win x_86_64 构建也运行良好,但我在 xubuntu(使用 OpenJDK Java 6 Runtime (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>
有人知道为什么这可能行不通吗?非常感谢!