1

我發展在Win 7(64位)一個跨平臺的RCP應用程序,靛藍/ Java 1.6的運行第谷建Eclipse RCP應用程序,構建產品與第谷。在eclipse中運行配置運行良好,並且Win x_86_64構建也運行良好,我在xubuntu(包括OpenJDK Java 6 Runtime(1.6.0_24)和Mac OS X(包含OpenJDK Java 6 Runtime(1.6.0_24))上得到以下錯誤( 。1.6.0_35)NoClassDefFoundError的:無法在Linux /的Mac OS

錯誤(在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

我得到完全相同的錯誤消息以及'Java的myprogram -X' –

回答

2

這是不是你運行一個Eclipse RCP應用程序。

您可能需要使用適當的本機啓動程序啓動它,或者用一個java -jar plugins/org.eclipse.equinox.launcher_(yourVersion).jar(見this documentation),並可能進一步參數選擇application

此外,你需要確保你在你的應用程序中的包是春分需要啓動。您可以通過在產品中包含功能org.eclipse.rcp來實現此目的。

+0

謝謝了'的Java版本-jar'完美的作品在兩個操作系統。回覆本地發射器:我希望* Tycho *會爲我創造這些。我已經閱讀了關於他們,但所有的帖子,等我已經提到* Delta Pack *作爲交易的一部分,而我認爲它不再有必要再包括它,因爲(如果我記得正確)必要的插件都將在日食p2中可用...我錯了嗎? –

+0

此外,本機啓動器確實存在,但是當我在Finder中雙擊Linux時,沒有任何反應。 Mac OS X中的'myprogram.app'也不會執行任何操作。我想他們在我的產品配置中被嚴重配置(即根本沒有配置)。 –

+0

本地啓動程序在所有配置都正確的情況下工作 - 請參閱[本教程](https://github.com/jsievers/tycho-demo)以獲取工作示例。 Tycho需要'org.eclipse.equinox.executable'功能(又名「增量包」),但它通常會自動將其從Eclipse發行版存儲庫中提取出來。 – oberlies