NoClassDefFoundError:无法在Linux / Mac OS下运行Tycho构建的Eclipse RCP应用程序

时间:2012-10-15 10:13:49

标签: cross-platform eclipse-rcp classnotfoundexception tycho target-platform

我正在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>

有没有人知道为什么这可能不起作用? 非常感谢!

1 个答案:

答案 0 :(得分:2)

这不是您运行Eclipse RCP应用程序的方式。

您需要使用相应的原生启动器启动它,或使用java -jar plugins/org.eclipse.equinox.launcher_(yourVersion).jar(请参阅this documentation)以及可能的其他参数来选择application

此外,您需要确保在应用程序中有Equinox需要启动的软件包。您可以在产品中添加功能org.eclipse.rcp来完成此操作。