Ho creato un'applicazione Eclipse RCP (Indigo) con Tycho. La build viene eseguita su una macchina Win 7, a 64 bit.La distribuzione Mac dell'applicazione Eclipse RCP creata con Tycho su Windows non viene avviata
Il POM genitore comprende:
<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>
...
La configurazione di prodotto si presenta così (con alcune omissioni e la linea in più pause per 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>
La build funziona senza problemi, e genera file zip, che, scompattato sui SO di destinazione Windows & Linux include i lanciatori funzionanti. (Su Linux, devo rendere eseguibile lanciatore prima di essere in grado di eseguirlo.)
In Mac OS X (10.6.8), tuttavia, il lanciatore (myapp.app) non fa nulla ...
Quando eseguo java -jar -XstartOnFirstThread plugins/org.eclipse.equinox.launcher_[version]
, l'applicazione viene avviata, anche se senza la schermata iniziale.
Immagino di avere un'impostazione sbagliata in qualsiasi punto della mia configurazione prodotto, ma non mi interessa quale.
Devo aggiungere che sto usando il repo Indigo p2 piuttosto che una piattaforma di destinazione locale nella build. –
Una nota ai nuovi utenti di .app come me: 'myapp.app' è in realtà una cartella e l'impostazione del bit eseguibile per questa cartella, a meno che non venga eseguita in modo ricorsivo, non cambierà nulla. Il file di avvio effettivo si trova all'interno di questa cartella in * myapp.app/Contents/MacOS/myapp *, e l'impostazione del bit eseguibile per questo file ('chmod + x myapp') farà il trucco e renderà l'eseguibile dell'app (a) eseguendo questo file dalla riga di comando (da * myapp.app/Contents/MacOS/* con './myapp'), (b) facendo doppio clic su * myapp.app/Contents/MacOS/myapp *, o (c) facendo doppio clic su * myapp.app * stesso (nel Finder) –