StackOverflowError in tycho build - eclipse-rcp

I am getting a StackOverflowError in my Tycho build. I have tried using the debug flag (-X) but this does not show any useful information at the point of error.
constituent[38]: file:/C:/apache-maven-3.8.5/lib/wagon-file-3.5.1.jar
constituent[39]: file:/C:/apache-maven-3.8.5/lib/wagon-http-3.5.1-shaded.jar
constituent[40]: file:/C:/apache-maven-3.8.5/lib/wagon-provider-api-3.5.1.jar
---------------------------------------------------
Exception in thread "main" java.lang.StackOverflowError
at java.base/java.net.URI$Parser.scanIPv4Address(URI.java:3413)
at java.base/java.net.URI$Parser.parseIPv4Address(URI.java:3453)
at java.base/java.net.URI$Parser.parseServer(URI.java:3355)
at java.base/java.net.URI$Parser.parseAuthority(URI.java:3276)
at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3218)
at java.base/java.net.URI$Parser.parse(URI.java:3174)
at java.base/java.net.URI.<init>(URI.java:623)
at java.base/java.net.URI.create(URI.java:904)
at java.base/java.net.URI.resolve(URI.java:1089)
at org.eclipse.tycho.p2.remote.SharedHttpCacheStorage$CacheLine.getRedirect(SharedHttpCacheStorage.java:440)
at org.eclipse.tycho.p2.remote.SharedHttpCacheStorage.getCacheEntry(SharedHttpCacheStorage.java:111)
at org.eclipse.tycho.p2.remote.SharedHttpCacheStorage.getCacheEntry(SharedHttpCacheStorage.java:111)
at org.eclipse.tycho.p2.remote.SharedHttpCacheStorage.getCacheEntry(SharedHttpCacheStorage.java:111)
I'm using Tycho 3.0.1.
Are there any other debugging flags that I could use to get more information?

I am currently upgrading the project from Java 1.8 to Java 18. There is a component in the target definition which has caused problems in the past. I decided to remove it and the StackOverflowError did not occur during the build. Not sure why it became a problem during the upgrade.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target includeMode="feature" name="ATF-RCP Target Nexus" sequenceNumber="24">
<locations>
...
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="false" type="InstallableUnit">
<repository location="https://sourceforge.net/projects/birt/files/release/4.16.0/"/>
<unit id="org.eclipse.birt.osgi.runtime.feature.group" version="4.16.0.v202006301151"/>
</location>
</locations>
</target>
It's a component which also needs to be upgraded so I'll need to look for an alternative source anyway.

Related

Unbound classpath container: 'JRE System Library [adoptopenjdk-11]' in project '' with Processing

I want to get processing 4 working in VSCode.
https://github.com/processing/processing4
Right not I get several errors that look like:
Unbound classpath container: 'JRE System Library [adoptopenjdk-11]' in project ''
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="adoptopenjdk-11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
It is not a maven or a graddle project, and I prefer to keep it that way if possible (e.g. using a settings.json).
Hope someone can help fix this error.

Eclipse EMF RAP Target Components

Good day all,
I am attempting to get an Eclipse RAP application running with EMF support. Following the steps from the Eclipse wiki (https://wiki.eclipse.org/RAP/EMF_Integration) as closely as possible (it's dated four years ago), I am putting the following packages into my Target definition:
EMF RAP Target Components
RAP Basic Equinox Target
RAP Runtime
This gives me the following Target definition:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target name="SCRAMSTargetDefinition" sequenceNumber="17">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.emf.rap.sdk.feature.group" version="2.13.0.v20170609-0928"/>
<unit id="org.eclipse.rap.equinox.target.feature.feature.group" version="3.2.0.20170613-1148"/>
<unit id="org.eclipse.rap.feature.feature.group" version="3.2.0.20170609-1144"/>
<repository location="http://download.eclipse.org/releases/oxygen/"/>
</location>
</locations>
</target>
The Target will not resolve though, giving me the following dependency errors:
Problems occurred while resolving the target contents
Cannot complete the install because one or more required items could not be found.
Cannot satisfy dependency:
From: EMF RAP Runtime 2.13.0.v20170609-0928 (org.eclipse.emf.rap.feature.group 2.13.0.v20170609-0928)
To: org.eclipse.emf.rap.edit.ui.feature.group [2.9.0.v20170609-0928]
Cannot satisfy dependency:
From: EMF RAP Target Components 2.13.0.v20170609-0928 (org.eclipse.emf.rap.sdk.feature.group 2.13.v20170609-0928)
To: org.eclipse.emf.rap.feature.group [2.13.0.v20170609-0928]
Missing requirement: EMF RAP Edit UI 2.9.0.v20170609-0928 (org.eclipse.emf.rap.edit.ui.feature.group 2.9.0.v20170609-0928) requires 'A.PDE.Target.Platform Cannot be installed into the IDE 0.0.0' but it could not be found
Software being installed: EMF RAP Target Components 2.13.0.v20170609-0928 (org.eclipse.emf.rap.sdk.feature.group 2.13.0.v20170609-0928)
Buried in there is A.PDE.Target.Platform Cannot be installed into the IDE 0.0.0, which would seem to be the core problem - but this is a Target Definition, not the IDE itself, so I'm not understanding why it's complaining in this way.
I have tried including combinations of other EMF packages into the Target Definition, but nothing has helped. Any guidance would be appreciated.
I found the answer in the Eclipse Forums:
When adding the update site to the target definition, the Include required software option has to be disabled. This is equivalent to switching includeMode from planner to slicer. In addition to that, you might want to enable the Include all environments option (set includeAllPlatforms to true).
Please note that these settings have to be the same for all locations (if the target definition includes more than one location / update site).

How to correctly specify eclipse-plugins in category.xml of tycho eclipse-repository?

I want to create a p2 repository of some eclipse-plugins during a tycho build.
My category.xml looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<site>
<feature url="plugins/<artifact-id>-1.0.0.jar"
id="<artifact-id>" version="1.0.0.qualifier">
<category name="cat" />
</feature>
<category-def name="cat" label="example category" />
</site>
where <artifact-id> is the maven artifact id of the eclipse-plugin that shall be included in the p2 repo.
When executing the maven build I get the following error message:
[ERROR] Internal error: java.lang.RuntimeException: "No solution found
because the problem is unsatisfiable.": ["Unable to satisfy dependency
from <repository-module-artifact-id> 1.0.0.qualifier to
<artifact-id>.feature.group[1.0.0,1.0.1).", "No
solution found because the problem is unsatisfiable."]
I have included the eclipse-plugin in the dependencies of the repository-module.
What am I missing here?
as of now you can only reference features in category.xml.
recently there was a patch that will allow referencing individual bundles in a future version of tycho, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=381377

Have added Ivy management to Eclipse project, then what?

Have added Ivy management to one of my eclipse projects. Nothing happened after that.
I have a guide to add something to ivy.xml and ivysettings.xml, so what? How to create empty versions of these files? Where to put them?
I have created some by intuition, in the project root, then added to files what was told.
Nothing happened. Where are new libraries? How to force Ivy to do something?
Versions:
Apache IvyDE 2.2.0.beta1-201203282058-RELEASE
Eclipse Helios Service Release 2
Guides for ivy are for xuggler: http://www.xuggle.com/downloads
I have created ivy.xml by File New and added what was said without ellipsis. icysettings.xml are just the sample w/o ellipsis.
Yes ivy.xml should be in the root (for default configuration).
try this:
<ivy-module
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="com.organisation" module="stackoverflow" revision="1.0.0" status="integration" >
</info>
<configurations>
<conf name="default" />
</configurations>
<dependencies>
<dependency org="xuggle" name="xuggle-xuggler" rev="5.2" />
</dependencies>
</ivy-module>
Create ivysettings.xml file in the root as well. This one is adapted to your need
<ivysettings> <
settings defaultResolver="default" />
<include url="${ivy.default.settings.dir}/ivysettings.xml" />
<resolvers>
<url m2compatible="true" name="xugglecode">
<ivy
pattern="http://xuggle.googlecode.com/svn/trunk/repo/share/java/[organization]/[artifact]/[revision]/ivy-[revision].xml" />
<ivy
pattern="http://xuggle.googlecode.com/svn/trunk/repo/share/java/[organization]/[artifact]/ivy-[revision].xml" />
<artifact
pattern="http://xuggle.googlecode.com/svn/trunk/repo/share/java/[organisation]/[artifact]/[revision]/[artifact](-[revision]).[ext]" />
<artifact
pattern="http://xuggle.googlecode.com/svn/trunk/repo/share/java/[organisation]/[artifact]/[artifact](-[revision]).[ext]" />
<artifact
pattern="http://xuggle.googlecode.com/svn/trunk/repo/share/java/[organisation]/[artifact](-[revision]).[ext]" />
<artifact
pattern="http://xuggle.googlecode.com/svn/trunk/repo/share/java/[artifact](-[revision]).[ext]" />
<artifact
pattern="http://build.xuggle.com/view/Stable/job/red5_jdk6_stable/lastSuccessfulBuild/artifact/workingcopy/dist/[artifact].[ext]" />
</url>
<chain name="default" changingPattern=".*SNAPSHOT">
<resolver ref="xugglecode" />
</chain>
</resolvers>
</ivysettings>
Now when you add ivy management, in Main tab you should see Ivy File: ivy.xml as default.
now go to settings tab. Check the box of 'Enable project specific settings'.
in Ivy settings path, easier to choose the one you just created in your root project using 'Workspace button'. Navigate and choose.
Press ok. It will start resolving immediately.
I should tell you, that even though the file exists, I couldn't retrieve it. The ivy- console seems stuck. I'm receiving Status Code 403. I'm doing from work.
Maybe you have better luck resolving it. If not, consider this as a mini example of how to set up IvyDE.

deploying OSGi project as Webstart using command line tools

How do I create a modular OSGi project that can be distributed with Java Webstart, using command line tools?
I've found instructions to export a set of OSGi plugins from eclipse. But instructions for doing so without the help of eclipse are hard to find. I would like to do this using ant build scripts and / or other command line tools.
Here is what I've got so far. Using ant, all the plug-in bundles are copied to a directory and signed. After that, I've created a jnlp file named wrapper.jnlp
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://localhost/webstart" href="wrapper.jnlp">
<information>
<title>My app</title>
<vendor>Me</vendor>
<offline-allowed/>
</information>
<resources>
<j2se version="1.5+" java-vm-args="-Xmx512M"/>
<jar href="org.eclipse.equinox.launcher.jar"/>
<extension name="Wrapper feature" href="myprogram.jnlp"/>
</resources>
<application-desc main-class="org.eclipse.equinox.launcher.WebStartMain"/>
<security>
<all-permissions/>
</security>
</jnlp>
I've created a second jnlp file named myprogram.jnlp.
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://localhost/webstart" href="myprogram.jnlp">
<information>
<title>My app</title>
<offline-allowed/>
</information>
<resources>
<j2se version="1.5+" java-vm-args="-Xmx512M"/>
<jar href="myapp.jar"/>
<jar href="derby.jar"/>
<jar href="commons-math-2.0.jar"/>
...omitting a dozen more jar files...
</resources>
<application-desc main-class="myprogram.Main"/>
<security>
<all-permissions/>
</security>
</jnlp>
When I deploy and try to start it (from the command line: javaws http://localhost/webstart/wrapper.jnlp), the jar files of the application appear to be downloaded. Then I get the following error in a log file:
!SESSION Wed Jun 29 13:43:52 CEST 2011 -----------------------------------------
!ENTRY org.eclipse.equinox.launcher 4 0 2011-06-29 13:43:52.448
!MESSAGE Exception launching the Eclipse Platform:
!STACK
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:411)
at org.eclipse.equinox.launcher.WebStartMain.basicRun(WebStartMain.java:78)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
at org.eclipse.equinox.launcher.WebStartMain.main(WebStartMain.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:590)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:887)
Any idea what I'm doing wrong? Where should I look next?
I had the same issue. I solved it by specifying the following in my wrapper jnlp:
<resources>
<!-- Reference to the launcher jar. The version segment must be updated to the version being used-->
<jar href="plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar" />
<!-- Reference to the osgi jar. The version segment must be updated to the version being used-->
<jar href="plugins/org.eclipse.osgi_3.7.0.v20110613.jar" />
...
</resources>
I believe you might want to switch gears and create a P2 repository with your code and all dependencies, then have a bare-bones p2-installer pull the dependencies from there (bypassing WebStart) and start your application.
Have a look at this http://www.jbundle.org/osgi-webstart/ "Use this servlet to deploy your OSGi apps to a web client."
Though it's a maven plugin from the documentation it looks like you can run it without a maven project.
According to the sources, your problem is caused by failing to find org.eclipse.osgi bundle on the classpath. Make sure that the bundle is referenced properly and that it has correct manifest.