Buckminster hilfe

Alex Prak

Mitglied
Hallo,
ich hoffe jemand kann mir helfen !!

Ich habe ein Projekt, welches aus ca. 15 "Unterprojekten" besteht. Zurzeit automatisiere ich den ganzen Buildprozess und richte ein Continuous Integration Server ein. Dies klappt auch schon gut. Den Build habe ich mit Ant automatisiert.

Mein Projekt ist ein Eclipse RCP Projekt. Nun muss ich nach dem kompilieren das Porjekt irgendwie erstellen (exe usw.). So bin ich auf Buckminster gestoßen, jedoch habe ich trotz mehreren Stunden googlen keine Ahnung wie das funktioniert.

In Eclipse funktioniert die Produkterstellung mit Export Product wunderbar. Nun muss ich dies irgendwie aus der IDE herausbringen und in Jenkins einbinden. (Buckminster Plugin ist bereits installiert)


Mein Projekt enthält bereits Dateien wie build.propertes, p2.inf, plugin.properties usw..
Kann ich diese Dateien vllt. gleich verwenden oder muss ich die cspex, rmap.. - Dateien erstellen. Bis jetzt bin ich durch kein Tutorial schlau geworden.... :(
 

Alex Prak

Mitglied
Ok bin jetzt bisschen weiter.

Ich bin nach diesem Tutorial vorgegangen (ralfebert.de/blog/eclipsercp/rcp_builds/).
Allerdings komme ich beim Punkt " Installing the product from the p2 repository manually" nicht weiter.

Ich kann zwar auch über Eclipse wie im Punkt davor beschrieben eine site.p2 erstellen, jedoch finde ich die Datei oder das Verzeichnis nicht.

Wozu brauche ich überhaupt dieses p2-Zeug?

Meinen Build habe ich ja eigentlich in Ant schon automatisiert. Ich brauche eigentlich nur noch die Projekterstellung (exe...). Kann ich Buckminster nicht einfach alle benötigten Jars dafür geben?
 
G

Gonzo17

Gast
Da bist du leider auf ein Thema gestoßen, das in meinen Augen ganz großer Murks ist und für mich persönlich auch ein Grund mir dreimal zu überlegen ob ich nochmal auf Eclipse RCP setze (trotz einiger Vorteile).

Das Tutorial ist ansich schon das, was ich dir auch mal empfohlen hätte, daran hatte ich mich anfangs auch orientiert.

Erstmal kann ich dir noch das hier empfehlen, die Dokumentation zu Buckminster: Eclipse downloads - mirror selection

Jetzt aber mal ein paar generelle Aussagen und Tipps zu Buckminster.

Buckminster ist generell erstmal ein Plugin für Eclipse. Das, was man später für Jenkins bereitstellt, ist eine Eclipse-Umgebung + Buckminster Plugin und diese Umgebung wird dann "headless" (also ohne GUI) gestartet. Wozu? Das hast du dich ja auch schon gefragt, deswegen schonmal vorab die Antwort. Buckminster selbst macht erstmal nichts anderes als die Abhängigkeiten deiner Plugins, Features und Products aufzulösen und benötigt dafür eine komplette Eclipse-/OSGi-Umgebung. Dazu diese lustigen Dateien wie RMAP und CSPEX. Das, was du mit "Projekterstellung" betitelst, ist aber keine Leistung von Buckminster, sondern das machst du tatsächlich wieder per Ant mit einem Aufruf auf eine von Eclipse bereitgestellte jar-Datei. Dazu schau dir einfach mal seine product.ant an.

Mein Projekt enthält bereits Dateien wie build.propertes, p2.inf, plugin.properties usw..
Kann ich diese Dateien vllt. gleich verwenden oder muss ich die cspex, rmap.. - Dateien erstellen. Bis jetzt bin ich durch kein Tutorial schlau geworden.... :(

Ja, du musst vor allem CQUERY und RMAP verwenden. Genau das ist nämlich Buckminster, damit steuerst du woher du welche Abhängigkeiten lädst.


Wozu brauche ich überhaupt dieses p2-Zeug?

Meinen Build habe ich ja eigentlich in Ant schon automatisiert. Ich brauche eigentlich nur noch die Projekterstellung (exe...). Kann ich Buckminster nicht einfach alle benötigten Jars dafür geben?


Wofür du das p2-Zeug brauchst? Lies vielleicht mal hier: Equinox p2
Das ist die Basis deiner Eclipse RCP Application. Und momentan kenne ich keine Alternative als Eclipse RCP Applications mit Buckminster zu bauen.
 

Alex Prak

Mitglied
Hi, erstmal danke für die Hilfe!

Rein vom Ablauf her werde ich also das Gesamtprojekt mit Ant bauen. Anschließend wird Buckminster ausgeführt, damit es die Abhängigkeiten usw. auflöst und jars erstellt, welche dann für die product.ant-Buildfile notwendig sind. Habe ich das richtig verstanden?


Die product-configuration ist feature-basiert und das Projekt besteht aus 15 unterprojekten. Davon ist eins das product und eins ist ein feature (update-feature). Die restlichen unterprojekte sind plug-in Projekte. Alle Projekte haben untereinander Abhängigkeiten.

  • com.beispiel.product
  • com.beispiel.updatefeature
  • com.beispiel.common
  • ...



Muss ich für jedes einzelne Projekt CQUERY und RMAP erstellen oder reicht eventuell eins fürs product, welche alle Abhängigkeiten auflöst?
Die Projekte haben neben den Projektabhängigkeiten untereinander auch Plugin-Abhängigkeiten zu irgendwelchen Eclipse-Jars usw. Müssen auch diese in der RMAP berücksichtigt werden (sind nämlich in jedem Projekt ziemlich viele). In der CQUERY reichen ja die ganzen Projekte - zumindest habe ich das so verstanden.



Ich dachte die Automatisierung des Builds wird der größte Aufwand bei der CI-Einführung. Jedoch scheint mir dieser headless-export noch aufwendiger und komplexer.
 
Zuletzt bearbeitet:
G

Gonzo17

Gast
Rein vom Ablauf her werde ich also das Gesamtprojekt mit Ant bauen. Anschließend wird Buckminster ausgeführt, damit es die Abhängigkeiten usw. auflöst und jars erstellt, welche dann für die product.ant-Buildfile notwendig sind. Habe ich das richtig verstanden?

Nicht ganz. Ich schilder dir mal kurz wie es bei mir abläuft - das ist aber keine Garantie für eine optimale oder gute Lösung, sondern lediglich für eine funktionierende.

Ich habe pro logischer Einheit gruppiert. Das war in diesem Fall pro Feature. Ich habe vier Features, die alle aufeinander aufbauen, also ist Feature A komplett unabhängig von anderen Features und hat nur seine Plugins, während Feature D alle anderen drei Features benötigt, das ist über verschachtelte Abhängigkeiten letztlich dann so beerdigt:

D -> C -> B -> A

Für jedes Modul (bzw Feature) habe ich einen Job in Jenkins und auch eine CSPEC. Ein Job in Jenkins sieht dann so aus, dass zum Beispiel alle Buckminster-Dateien für Feature D aus dem SVN ausgecheckt werden (nicht der Source-Code!) und im nächsten Schritt Buckminster aufgerufen wird. Buckminster zieht nun ALLE Abhängigkeiten des Features in den Workspace (bzw an die notwendige Stelle), da ist NICHTS mit Ant! Das ist der Teil, der Buckminster lohnenswert macht.* Es können nun verschiedene Actions von Buckminster aufgerufen werden. So kann man zum Beispiel eine Update-Site mit der Action #site.p2 erstellen lassen. Was Buckminster nicht kann ist ein Produkt für eine bestimmte Platftorm zu bauen! Und da kommt Ant ins Spiel, dann mit Ant kann man eigene Buckminster-Actions definieren und das ist das, was Ralf Ebert in seinem Tutorial macht. Die Actions #create.product bzw #create.product.zip gibt es so nicht, er definiert sie und damit kann man genau das machen, was du wolltest: Sein Eclipse RCP Produkt für eine bestimmte Plattform bauen. Netter Nebeneffekt hier ist, dass man für den Build auf einer anderen Plattform lediglich die drei Parameter
Code:
os
,
Code:
ws
und
Code:
arch
ändern muss.



*Dahinter steckt natürlich erstmal viel Konfig-Arbeit, weil man neben den CSPEC auch die RMAP(s) definieren muss.




Ich dachte die Automatisierung des Builds wird der größte Aufwand bei der CI-Einführung. Jedoch scheint mir dieser headless-export noch aufwendiger und komplexer.

Das Problem liegt aus meiner Sicht eher daran, dass es generell schwer ist, ein Produkt im Nachhinein automatisiert bauen zu lassen, ohne dass man sich vorher Gedanken darüber gemacht hat. Wenn sowas von Anfang an gemacht wird, dann muss man nur stellenweise anpassen, hat aber einen Build, der mitwächst. Für ein bestehendes Produkt sowas nachzuziehen ist in jedem Fall - egal wo letztlich der Haken ist - sehr nervig.
 

Alex Prak

Mitglied
Achso ok. Ich versuche gerade RMAPs und CQUERYs zu erstellen. Kann ich das überhaupt über die Konsole starten? Ist das dieser Aufruf? Also ich tue mich irgendwie schwer mit Buckminster.

<path/to/director>/director
-consolelog
-r file://<path/to/p2/site>
-d <path/to/destination/folder>
-i com.example.mail.product


Ich habe mir jetzt gedacht, dass ich für jedes einzelne Projekt eine RMAP und CQUERY erstelle. Dann brauche ich ja noch eine Art "Master-Datei" die aufgerufen wird und den Ablauf steuert.. ?! Oder brauche ich die zwei Dateien (rmap,cquery) nur in dem Hauptprojekt, also in dem product-Projekt.

Ralf Eberts Tutorial ist schon ganz gut, jedoch hat er ein kleines Projekt, mit nur einem Feature. Ich habe 14 Komponenten vom Typ osgi.bundle und weiß gar nicht wie ich da anfangen soll. Hier meine ersten Gehversuche mit Buckminster.


CQUERY
Code:
<?xml version="1.0" encoding="UTF-8"?>
<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0">
    <cq:rootRequest name="de.bsp.tdb.product" componentType="osgi.bundle"/>
</cq:componentQuery>

RMAP
Code:
<?xml version="1.0" encoding="UTF-8"?>
<rmap xmlns="http://www.eclipse.org/buckminster/RMap-1.0" 
	
	<searchPath name="Dependencies">
		<!-- dependencies project-->
		<provider readerType="local" componentTypes="osgi.bundle,eclipse.feature" mutable="true" source="true">
			<uri format="{0}/{1}/">
				<bc:propertyRef key="workspace.root" />
				<bc:propertyRef key="buckminster.component" />
			</uri>
		</provider>
	</searchPath>

	<!-- locator for jar dependencies (org.eclipse.core.runtime.....)
	<locator searchPathRef="Dependencies" pattern="^org(\..+)?" failOnError="false" />
	
	<!-- locator for other projects -->
	<locator searchPathRef="Dependencies" pattern="de.bsp.tdb.proj1" failOnError="false" />
	<locator searchPathRef="Dependencies" pattern="de.bsp.tdb.proj2" failOnError="false" />
	<locator searchPathRef="Dependencies" pattern="de.bsp.tdb.proj3" failOnError="false" />
	<locator searchPathRef="Dependencies" pattern="de.bsp.tdb.proj4" failOnError="false" />
	<locator searchPathRef="Dependencies" pattern="de.bsp.tdb.proj5" failOnError="false" />
	<locator searchPathRef="Dependencies" pattern="de.bsp.tdb.proj6" failOnError="false" />
	<locator searchPathRef="Dependencies" pattern="de.bsp.tdb.proj7" failOnError="false" />
	...
</rmap>
 

Alex Prak

Mitglied
Also ich teste das Buckminster Zeug jetzt direkt mit Hudson. Ich habe ein extra Projekt (product.site) für die Buckminster Dateien erstellt. Darin liegt eine product.ant, buckminster.properties, feature.xml, rcp.target, site.cquery und eine site.rmap Datei.

Die Target Platform Datei habe ich über Eclipse einfach exportiert. Habe nicht wie in Ralf Eberts Tutorial eine neue erstellt.

Meine Projekte heißen de.bsp.tdb.common, de.bsp.tdb.core usw...


RMAP
Code:
<?xml version="1.0" encoding="UTF-8"?>
<rmap
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.eclipse.org/buckminster/RMap-1.0"
    xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
    xmlns:mp="http://www.eclipse.org/buckminster/MavenProvider-1.0"
    xmlns:pp="http://www.eclipse.org/buckminster/PDEMapProvider-1.0">
 
   <searchPath name="project">
        <provider readerType="local"
            componentTypes="osgi.bundle,buckminster"
            mutable="true" source="true">
            <uri format="file:///{0}/trunk/{1}/">
                <bc:propertyRef key="workspace.root" />
                <bc:propertyRef key="buckminster.component" />
            </uri>
        </provider>
    </searchPath>
 
	<locator pattern="^de\.bsp\.tdb(\..+)?$" searchPathRef="project" />
</rmap>



Hier mein Jenkins Output:

INFO: importtargetdefinition '-A' '/D:/Jenkins/workspace/test/trunk/de.bsp.tdb.product.site/rcp.target'
INFO: import '/D:Jenkins/workspace/test/trunk/de.bsp.tdb.product.site/site.cquery'
ERROR [0001] : No suitable provider for component de.bsp.tdb.product.site:eclipse.feature was found in resourceMap file:/D:/Jenkins/workspace/test/trunk/de.bsp.tdb.product.site/site.rmap
ERROR [0001] : No suitable provider for component de.bsp.tdb.product.site:eclipse.feature was found in searchPath project
ERROR [0001] : Rejecting provider local(file:///{0}/trunk/{1}/[file:///D:/Jenkins/workspace/test/trunk/de.bsp.tdb.product.site/]): Components of type eclipse.feature are not supported
INFO: TAG-ID 0001 = Query for de.bsp.tdb.product.site:eclipse.feature





Nehme ich noch "eclipse.feature" als componentType mit auf, findet er tausende Komponenten, bringt jedoch auch für jede diesen Fehler:

ERROR [0002] : No suitable provider for component org.eclipse.emf.ecore.change:eek:sgi.bundle was found in resourceMap file:/D:/Jenkins/workspace/test/trunk/de.bsp.tdb.product.site/site.rmap
ERROR [0002] : No suitable provider for component org.eclipse.emf.ecore.change:eek:sgi.bundle was found in searchPath resources
ERROR [0002] : Resolution attempt ended with exception: Provider local(file:///D:/Jenkins/workspace/test/trunk/org.eclipse.emf.ecore.change/): Missing CSpec source required by component type osgi.bundle
ERROR Provider local(file:///D:/Jenkins/workspace/test/trunk/org.eclipse.emf.ecore.change/): Missing CSpec source required by component type osgi.bundle




Hat jemand vielleicht eine Idee? ... -.-
 
G

Gonzo17

Gast
Du musst dir vollständig über deine Abhängigkeiten bewusst sein. Wie du siehst möchte er ein Bundle des EMF anziehen. Jetzt stellt sich generell erstmal eine Frage. Möchtest du das in deiner Target Platform schon bereitstellen (dann fehlt es anscheinend noch) oder ist das ein Zusatz, den du über eine RMAP nachladen willst? Der erste Fall sollte soweit klar sein, da brauch ich nicht erklären was zu tun ist. Im zweiten Fall musst du schlicht einen weiteren
Code:
locator
und einen weiteren
Code:
searchPath
erstellen. Und die URL für den
Code:
searchPath
ist dann eben zur entsprechenden Update-Site, die das Bundle hinterlegt hat.
 

Alex Prak

Mitglied
Achso alles klar.

Ok läuft jetz soweit ganz gut. Er erstellt die site.p2 erfolgreich. Anschließend führt er #create.product.zip aus. Auch dies klappt. Wenn er dann ant startet, kommen Fehler.


[ant] D:\USERDATA\tq8796r\Jenkins\workspace\test\trunk\de.bsp.tdb.dependencies\lib\plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar
[ant] file:/D:/USERDATA/tq8796r/Jenkins/workspace/test/buckminster.output/de.bsp.tdb.UpdateFeature_3.5.8-eclipse.feature/site.p2/
[ant] D:\USERDATA\tq8796r\Jenkins\workspace\test\buckminster.output\de.bsp.tdb.UpdateFeature_3.5.8-eclipse.feature\product.win32.win32.x86

ERROR: org.eclipse.core.runtime.CoreException: D:\USERDATA\tq8796r\Jenkins\workspace\test\trunk\de.bsp.tdb.UpdateFeature\product.ant:22: Java returned: 13
org.eclipse.core.runtime.CoreException: D:\USERDATA\tq8796r\Jenkins\workspace\test\trunk\de.bsp.tdb.UpdateFeature\product.ant:22: Java returned: 13
at org.eclipse.buckminster.ant.AntRunner.handleInvocationTargetException(AntRunner.java:167)
at org.eclipse.buckminster.ant.AntRunner.run(AntRunner.java:322)
at org.eclipse.buckminster.ant.actor.AntActor.internalPerform(AntActor.java:254)
at org.eclipse.buckminster.core.actor.AbstractActor.perform(AbstractActor.java:186)
at org.eclipse.buckminster.core.internal.actor.PerformManager$DirectActionInvocation.execute(PerformManager.java:143)
at org.eclipse.buckminster.core.internal.actor.PerformManager.internalPerform(PerformManager.java:454)
at org.eclipse.buckminster.core.internal.actor.PerformManager.perform(PerformManager.java:293)
at org.eclipse.buckminster.core.internal.actor.PerformManager.perform(PerformManager.java:305)
at org.eclipse.buckminster.core.commands.Perform.internalRun(Perform.java:108)
at org.eclipse.buckminster.core.commands.WorkspaceCommand.run(WorkspaceCommand.java:91)
at org.eclipse.buckminster.cmdline.AbstractCommand.basicRun(AbstractCommand.java:200)
at org.eclipse.buckminster.cmdline.Headless.run(Headless.java:317)
at org.eclipse.buckminster.cmdline.Headless.run(Headless.java:136)
at org.eclipse.buckminster.cmdline.Headless.start(Headless.java:156)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
Caused by: D:\USERDATA\tq8796r\Jenkins\workspace\test\trunk\de.bsp.tdb.UpdateFeature\product.ant:22: Java returned: 13
at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.eclipse.ant.internal.core.ant.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:662)
at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:495)
at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.buckminster.ant.AntRunner.run(AntRunner.java:318)
... 25 more




Meine product.ant

Code:
<project>
	 <pathconvert property="equinox.launcher.jar">
	   <first count="1">
	     <sort>
	       <fileset dir="../de.bsp.tdb.dependencies/lib/plugins" includes="**/org.eclipse.equinox.launcher_*.jar"/>
	       <reverse xmlns="antlib:org.apache.tools.ant.types.resources.comparators">
	         <date/>
	       </reverse>
	     </sort>
	   </first>
	 </pathconvert>

	<target name="create.product">
		<property name="destination" location="${sp:destination}"/>
		<delete dir="${destination}"/>
		<makeurl property="repository" file="${sp:repository}"/>
		<mkdir dir="${destination}"/>
		<echoproperties/>
		<echo message="${equinox.launcher.jar}"/>
		<echo message="${repository}"/>
		<echo message="${destination}"/>
		<java jar="${equinox.launcher.jar}" fork="true" failonerror="true">
			<arg value="-application"/>
			<arg value="org.eclipse.equinox.p2.director"/>
			<arg value="-repository"/>
			<arg value="${repository}"/>
			<arg value="-destination"/>
			<arg value="${destination}"/>
			<arg value="-profile"/>
			<arg value="${profile}"/>
			<arg value="-profileProperties"/>
			<arg value="org.eclipse.update.install.features=true"/>
			<arg value="-installIU"/>
			<arg value="${iu}"/>
			<arg value="-p2.os"/>
			<arg value="${target.os}"/>
			<arg value="-p2.ws" />
			<arg value="${target.ws}"/>
			<arg value="-p2.arch" />
			<arg value="${target.arch}"/>
			<arg value="-consoleLog"/>
			<!-- jvmarg value="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y"/ -->
		</java>
	</target>
</project>


Aufruf in Jenkins

importtargetdefinition -A '${WORKSPACE}/trunk/de.bsp.tdb.UpdateFeature/rcp.target'
import '${WORKSPACE}/trunk/de.bsp.tdb.UpdateFeature/site.cquery'
build
perform -D target.os=win32 -D target.ws=win32 -D target.arch=x86 de.bsp.tdb.UpdateFeature#site.p2
perform -D target.os=win32 -D target.ws=win32 -D target.arch=x86 de.bsp.tdb.UpdateFeature#create.product.zip




Irgendeine Ahnung was da nicht stimmt?
 

Alex Prak

Mitglied
Hier meine logfile dazu usw...

Logfile:

!ENTRY org.eclipse.osgi 4 0 2012-09-18 11:26:38.612
!MESSAGE Application error
!STACK 1
java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)



Buckminster Director config.ini:

#This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser
#Sat Sep 01 15:13:47 CEST 2012
eclipse.p2.profile=Director
osgi.instance.area.default=@user.home/workspace
osgi.framework=file\:plugins/org.eclipse.osgi_3.8.0.v20120529-1548.jar
equinox.use.ds=true
osgi.bundles=reference\:file\:eek:rg.eclipse.equinox.simpleconfigurator_1.0.300.v20110815-1744.jar@1\:start
org.eclipse.equinox.simpleconfigurator.configUrl=file\:eek:rg.eclipse.equinox.simpleconfigurator/bundles.info
eclipse.product=org.eclipse.equinox.p2.director.product
osgi.framework.extensions=
osgi.bundles.defaultStartLevel=4
eclipse.p2.data.area=@config.dir/../p2
eclipse.application=org.eclipse.equinox.p2.director



Sagt vllt. mehr aus als return code 13. :)
Die org.eclipse.core.runtime_3.7.0_....jar liegt im Dependencies Projekt und wird bzw. sollte vom RMAP gefunden werden (dort liegen alle plugins...).
 
Zuletzt bearbeitet:
G

Gonzo17

Gast
Puh. Damit kann ich auf die Schnelle auch nichts anfangen. Außer zu sagen, was da steht: Ist
Code:
org.eclipse.core.runtime
wirklich schon gestartet? Vielleicht ist deine Eclipse-Instanz, die du hinterlegt hast, nicht vollständig? Woher hast du sie?
 

Alex Prak

Mitglied
Ich weiß nicht ob es schon gestartet ist.
Auf jeden Fall hab ich es in meiner product.configuration file drin und Auto-Start ist auf true gesetzt.
Wie meinst du das mit der Eclipse-Instanz? Ich mach das ja jetzt alles schon außerhalb der IDE, also mit Jenkins und dem Buckminster Plugin. Wirklich anstrengendes Zeug -.-!





Hier mal der log, wenn ich versuche das Projekt über die Konsole per director... zu erstellen.

....
....
....
!ENTRY org.eclipse.update.configurator 4 0 2012-09-18 14:22:33.840
!MESSAGE Could not install bundle plugins/org.eclipse.equinox.util_1.0.400.v20120522-2049.jar Bundle "org.eclipse.equinox.util" version "1.0.400.v20120522-2049" has already been installed from: reference:file:plugins/org.eclipse.equinox.util_1.0.400.v20120522-2049.jar

!ENTRY org.eclipse.update.configurator 4 0 2012-09-18 14:22:33.844
!MESSAGE Could not install bundle plugins/org.eclipse.update.configurator_3.3.200.v20120523-1752.jar Bundle "org.eclipse.update.configurator" version "3.3.200.v20120523-1752" has already been installed from: reference:file:plugins/org.eclipse.update.configurator_3.3.200.v20120523-1752.jar

!ENTRY org.eclipse.update.configurator 4 0 2012-09-18 14:22:33.845
!MESSAGE Could not install bundle plugins/org.sat4j.core_2.3.0.v20110329.jar Bundle "org.sat4j.core" version "2.3.0.v20110329" has already been installed from: reference:file:plugins/org.sat4j.core_2.3.0.v20110329.jar

!ENTRY org.eclipse.update.configurator 4 0 2012-09-18 14:22:33.846
!MESSAGE Could not install bundle plugins/org.sat4j.pb_2.3.0.v20110329.jar Bundle "org.sat4j.pb" version "2.3.0.v20110329" has already been installed from: reference:file:plugins/org.sat4j.pb_2.3.0.v20110329.jar

!ENTRY org.eclipse.equinox.p2.director 4 1 2012-09-18 14:22:35.107
!MESSAGE Cannot complete the install because one or more required items could not be found.
!SUBENTRY 1 org.eclipse.equinox.p2.director 4 0 2012-09-18 14:22:35.107
!MESSAGE Software being installed: Product Plug-in 3.5.8.201209181108 (de.bsp.tdb.product 3.5.8.201209181108)
!SUBENTRY 1 org.eclipse.equinox.p2.director 4 0 2012-09-18 14:22:35.107
!MESSAGE Missing requirement: Core Plug-in 3.5.8.201209181107 (de.bsp.tdb.common.core 3.5.8.201209181107) requires 'bundle org.eclipse.core.runtime [3.7.0,4.0.0)' but it could not be found




Er findet org.eclipse.core.runtime nicht. Drüber sucht er z.B. die org.sat4j.pb....jar - und die findet er. Und die core.runtime jar liegt in genau dem selben Ordner. (RMAP referenziert diesen Ornder) - also muss er die jar finden oder nicht ?!
Genauer Name: org.eclipse.core.runtime_3.7.0.v20110110.jar
 
Zuletzt bearbeitet:
G

Gonzo17

Gast
Ich mach das ja jetzt alles schon außerhalb der IDE, also mit Jenkins und dem Buckminster Plugin.

Achso, also hast du selbst keine Eclipse-Installation hinterlegt? Das ist gut, war mir nicht bewusst, aber ist natürlich besser so.


Aber leider kann ich dir wie gesagt da nicht mehr so einfach helfen. Mein Vorschlag ist, dass du erstmal ein kleines Projekt zu bauen versuchst (vielleicht einfach das Beispiel von Ralf Ebert oder ein Hello-World-RCP-Beispiel?) und dann schaust, ob das soweit funktioniert. Direkt mit einem riesigen Projekt loszulegen ohne vorher Erfahrung zu sammeln ist unheimlich schwer. Ich stand vor einer ähnlichen Aufgabe und habe erstmal geschaut was die Tutorials hergaben, war dann einfacher.
 

Alex Prak

Mitglied
Ja das Beispiel von Ralf Ebert hat gut geklappt. Aber hier habe ich jetzt keine Ahnung wo das Problem ist.

Auf jeden Fall stimmt irgendwas mit der org.eclipse.core.runtime jar nicht. Ich verstehe nicht warum er sie nicht findet (manueller fehler) bzw. warum sie nicht gestartet ist (jenkins fehler).
 
G

Gonzo17

Gast
Hm, wie gesagt, werde erstmal mit den Tools vertraut. Ich kann dir ziemlich sicher sagen, dass Jenkins an dieser Stelle wenig mit deinem Problem zu tun hat. Jenkins ist im Prinzip nur der Sklave, der deine Befehle ausführt - entweder per Knopfdruck oder zeitgesteuert. Jenkins checkt das Zeug nur aus, bietet Tools und das wars. Dementsprechend ist das Problem entweder bei Buckminster (kann ich mir aber auch nicht vorstellen, wenn das Tutorial von Ralf Ebert bei dir klappt) oder in deinem Code. Und meistens trifft ja eher letzteres zu. Nicht nur bei dir. :)
 

Alex Prak

Mitglied
Habe jetzt einen Fehler gefunden. Meine erstelle p2.site hatte nicht alle benötigten Plugins drin. Jetzt sind exakt die drin, die auch drin sind wenn ich das Projekt aus der IDE mit dem Wizard exportiere.

Über die Konsole (director...) funktioniert es und er erstellt das Produkt (zwar keine exe etc. - aber es klappt schon mal).
Jenkins schmeißt mir jedoch wieder exakt den selben Fehler...

Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)



Gibt es eigentlich eine gute Alternative um RCP Projekte zu erstellen und das am besten noch in Jenkins einzubinden?



Außerdem ist mir noch aufgefallen, dass Ralf Ebert in seinem Mail-Beispiel ein Feature-Projekt als Product hat. (also die Product Files sind in einem Feature-Project)
In meinem Fall ist mein Feature-Project ein plugin-project. Macht das was? Ich habe dann auch einfach ein Extra Projekt für Buckminster erstellt (feature-project).
 
Zuletzt bearbeitet:
G

Gonzo17

Gast
Gibt es eigentlich eine gute Alternative um RCP Projekte zu erstellen und das am besten noch in Jenkins einzubinden?

Es gibt eine Alternative, ja. Wie gut die ist, kann ich schlecht beantworten, aber habe schon oft gelesen, dass es noch keine gute Alternative sein soll. Vielleicht wird das noch. Schau hier: Sonatype.org: Tycho


Außerdem ist mir noch aufgefallen, dass Ralf Ebert in seinem Mail-Beispiel ein Feature-Projekt als Product hat. (also die Product Files sind in einem Feature-Project)
In meinem Fall ist mein Feature-Project ein plugin-project. Macht das was? Ich habe dann auch einfach ein Extra Projekt für Buckminster erstellt (feature-project).

Also das
Code:
product
liegt bei mir auch in einem Plugin, das sollte kein Problem sein. Mein
Code:
product
basiert auf Features und dementsprechend habe ich auch mehrere Features, die insgesamt alle meine Plugins enthalten. Features sind ja auch nichts weiter als Bündelungen von Plugins. Und ja, ich habe auch für das Buckminster-Zeug ein eigenes Feature. Habe also quasi für jedes vorhandene Feature ein weiteres Feature mit Buckminster-Dateien. Ich meine mich zu erinnern, dass das notwendig ist, weil Buckminster nur alle Abhängigkeiten auflöst, aber nicht das Feature selbst, in dem die Dateien sind und deshalb sind die alle in einem neuen Feature.
 

Alex Prak

Mitglied
Danke nochmal für die Hilfe! Kurz zu den Abhängigkeiten. Wenn ich mit dem Eclipse Export Wizard mein Produkt erfolgreich exportieren bzw. erstellen kann, dann müssten die Abhängigkeiten doch richtig sein bzw. passen?

Mein Projekt besteht aus 12 Plugins, die alle in einem Feature stecken. Dann habe ich noch ein zweites Feature, welches paar Eclipse-Plugins beinhaltet. Muss ich für dieses Feature auch ein extra Projekt erstellen, welches cspex, cquery und rmap beinhaltet? Findet dann Buckminster die Dateien automatisch oder gebe ich ihm beim Aufruf einfach ein zweites import cquery an?
Ich habe für mein Haupt-Feature ein .build Projekt erstellt, welches auch ein Feature ist (einfach nach Ralf Eberts Anleitung). Dieses Feature beinhaltet mein Hauptfeature als "included feature", welches wiederrum meine ganzen Plugins beinhaltet. Müsste doch passen oder?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Hudson/Buckminster: Verschiedene Fragen Tools - Maven, Gradle, Ant & mehr 12
A Hudson-Buckminster wirft Exception nach SVN Checkout Tools - Maven, Gradle, Ant & mehr 3
C Buckminster: Versionen einzelner Jars aus der Targetplatform Tools - Maven, Gradle, Ant & mehr 5
C Buckminster: Cannot satisfy dependency: Tools - Maven, Gradle, Ant & mehr 4
C Buckminster + plugin tests Tools - Maven, Gradle, Ant & mehr 3
H RCP Build mit Buckminster (headless) - unresolved node Tools - Maven, Gradle, Ant & mehr 7
tfa frisch installierter Buckminster kann nichts? Tools - Maven, Gradle, Ant & mehr 3
B Buckminster: Plugin Version in Java source File einfügen Tools - Maven, Gradle, Ant & mehr 4
O Webstart Mit Buckminster JNLP erzeugen Tools - Maven, Gradle, Ant & mehr 5
O Buckminster: Circular dependency detected Tools - Maven, Gradle, Ant & mehr 2
F Eigene Ant-Tasks in Buckminster Tools - Maven, Gradle, Ant & mehr 5
@ [Buckminster] Missing requirement Tools - Maven, Gradle, Ant & mehr 2
T Buckminster Build JRE mitliefern Tools - Maven, Gradle, Ant & mehr 2
T Buckminster + SVN support Tools - Maven, Gradle, Ant & mehr 5
E Probleme mit Buckminster unter eclipse 3.4 Tools - Maven, Gradle, Ant & mehr 11
T Buckminster-Hudson RCP-Build "CSpec source required" Tools - Maven, Gradle, Ant & mehr 9
4 Hilfe bei einem BB Code formatierer Tools - Maven, Gradle, Ant & mehr 4
Chris81T Maven Hilfe bei EAR packaging mit maven-ear-plugin Tools - Maven, Gradle, Ant & mehr 1
D Maven, Cargo, Selenium - brauche Hilfe bei Konfiguration Tools - Maven, Gradle, Ant & mehr 4
N im JAR läufts nicht :( hilfe Tools - Maven, Gradle, Ant & mehr 2
J Online Shop mit Hilfe eines Applets Tools - Maven, Gradle, Ant & mehr 17
W Dringende Hilfe bei applet notinied benötigt Tools - Maven, Gradle, Ant & mehr 7
S Vorschläge/Hilfe: Tunierbaum bis der Arzt kommt. Tools - Maven, Gradle, Ant & mehr 2
M Sternenhimmel Applet Hilfe! Tools - Maven, Gradle, Ant & mehr 8
A Hilfe! Java Applet Lake von Anfy - wie in HP einbinden? Tools - Maven, Gradle, Ant & mehr 25
M JavaApplet Projekt und clien-side read/write.Bitte um Hilfe. Tools - Maven, Gradle, Ant & mehr 6
B Java neuling, brauche hilfe Tools - Maven, Gradle, Ant & mehr 4
G Hilfe bei Bildgröße in Java [dekompilierter Bytecode] Tools - Maven, Gradle, Ant & mehr 5
G timer erstellen dringend hilfe Tools - Maven, Gradle, Ant & mehr 9
P Hilfe - Seltsame Fehlermeldung nach Signatur eines Applets! Tools - Maven, Gradle, Ant & mehr 12
H Hilfe bei Applet-Programmierung Tools - Maven, Gradle, Ant & mehr 5
F Hilfe, wie programmiert man einen Packer mit Java? Tools - Maven, Gradle, Ant & mehr 2
G Hilfe bitte bitte Tools - Maven, Gradle, Ant & mehr 2
G Hilfe! Java Applet Tools - Maven, Gradle, Ant & mehr 6
S in Applet "umwandeln" - HILFE! Tools - Maven, Gradle, Ant & mehr 14
L Mittelwertberechnung Hilfe Tools - Maven, Gradle, Ant & mehr 2
G [HILFE!]Dezimalzahl Umwandler in frei wählbares Zahlensystem Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben