2013-02-25 78 views
5

我已經建立了一個Eclipse RCP應用程序(藍色)與第谷。該構建在Win 7,64位機器上運行。Mac的分佈不啓動

父POM包括:

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>target-platform-configuration</artifactId> 
    <version>${tycho-version}</version> 
    <configuration> 
    <resolver>p2</resolver> 

    <environment> 
    <os>linux</os> 
    <ws>gtk</ws> 
    <arch>x86_64</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> 

... 

產品配置看起來像這樣(有一些疏漏和額外的換行符爲readbility):

<product name="My App" uid="myapp.product" id="myapp.core.product" application="myapp.core.application" version="0.1.4.qualifier" useFeatures="true" includeLaunchers="true"> 

    <configIni use="default"> 
    </configIni> 

    <launcherArgs> 
     <programArgs>-data @noDefault</programArgs> 
     <vmArgsMac>-XstartOnFirstThread 
         -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac> 
    </launcherArgs> 

    <launcher name="myapp_0_1_4"> 
     <solaris/> 
     <win useIco="false"> 
     <bmp/> 
     </win> 
    </launcher> 

    <vm> 
     <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6</macos> 
    </vm> 

    <plugins> 
     <plugin id="com.ibm.icu"/> 
     <plugin id="myapp.core"/> 
     <plugin id="org.eclipse.core.runtime"/> 
     <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/> 
     <plugin id="org.eclipse.equinox.app"/> 
     <plugin id="org.eclipse.equinox.common"/> 
     <plugin id="org.eclipse.osgi"/> 
     <plugin id="org.eclipse.swt"/> 
     <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/> 
     <plugin id="org.eclipse.ui"/> 
     <plugin id="org.eclipse.ui.workbench"/> 
    </plugins> 

    <features> 
     <feature id="org.eclipse.rcp" version="3.7.2.v20120120-1424-9DB5FmnFq5JCf1UA38R-kz0S0272"/> 
     <feature id="myapp.platform_dependencies.feature" version="0.1.4.qualifier"/> 
     <feature id="myapp.core.feature" version="0.1.4.qualifier"/> 
     <feature id="myapp.ui.feature" version="0.1.4.qualifier"/> 
     <feature id="myapp.model.feature" version="0.1.4.qualifier"/> 
    </features> 

    <configurations> 
     <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" /> 
     <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" /> 
    </configurations> 

</product> 

構建運行流暢,並生成zip文件,在目標操作系統上解壓Windows Linux包括工作發射器。 (在Linux上,我必須能夠運行之前,使啓動程序可執行文件。)

在Mac OS X(10.6.8),然而,啓動器(myapp.app)什麼也不做......

當我運行java -jar -XstartOnFirstThread plugins/org.eclipse.equinox.launcher_[version]時,應用程序啓動,儘管沒有啓動畫面。

我想象我在產品配置有一個錯誤的設定在任何地方,但我不介意它。適用於Mac的Windows

+0

我應該補充說我正在使用Indigo p2倉庫,而不是本地目標平臺。 – 2013-02-25 12:50:27

+0

對於像我這樣的.app新手來說:'myapp.app'實際上是一個文件夾,並且爲該文件夾設置可執行位 - 除非遞歸執行 - 不會改變任何內容。實際的啓動程序文件位於* myapp.app/Contents/MacOS/myapp *這個文件夾中,並且爲該文件('chmod + x myapp')設置可執行位將會執行該操作並使應用程序可執行(a)通過從命令行運行此文件(從* myapp.app/Contents/MacOS/*使用'。/ myapp'),(b)通過雙擊* myapp。app/Contents/MacOS/myapp *,或者(c)通過雙擊* myapp.app *本身(在Finder中) – 2013-02-25 19:54:16

回答

3

跨平臺編譯預計不會工作。原因是Tycho/p2需要用Unix權限模擬一個文件系統。在Tycho的問題跟蹤器中有一個request for this,但是恕我直言,實施這個不值得。

+0

我已閱讀了錯誤報告,並且此時不會對討論做出貢獻Windows的可執行位特性的實現是否有用(無論如何我都是OS無關的),但是你能否確認將構建移植到例如Linux會解決這個問題? – 2013-02-25 19:42:23

+2

是的,如果構建機器是* nix系統,則使用Tycho進行跨平臺構建。 – oberlies 2013-02-26 09:04:48

1

我剛剛想出如何從Windows使OSX可執行文件。應用程序。

您可以設置第谷建立生成文件名爲.tar.gz適用於Mac/Linux的,然後使用工具來設置tar文件中的可執行權限,如焦油支持* nix中的權限。

這裏是一個片段,顯示瞭如何設置這個在pom.xml文件。 (這段代碼還設置了Mac.app文件夾,並將版本添加到歸檔文件名中): http://snipt.org/Aggid3

這是一個執行權限位的Java類。它需要番石榴和Apache下議院壓縮: http://snipt.org/Aggic1

這裏是一個預置的罐子,包括所有的依賴: https://mega.co.nz/#!WcNjyRjS!KE7tM1xYrt1l9JIguUAsrgpLe2V0NS1QIj_NvdAnm88

使用

的利用方法上面會: Java的罐子gztperms.jar「我的產品展示0.0.1.201309091838-macosx.cocoa.x86.tar.gz「」My Product-Executable-0.0.1.201309091838-macosx.cocoa.x86.tar.gz「」My Product.app/Contents/MacOS/My Product「

我有一個相當簡單的基於Ant的後構建腳本,我從Jenkins執行,發現.gz文件並在其上運行此腳本,現在從神器鏈接開始工作。