Main /
EclipseAndTychoNotes about setting up Triquetrum to use Eclipse Tycho. ProblemWe want to set up the Triquetrum Git Repo to use Eclipse Tycho for so that we can build Triquetrum from the command line. Generate pom.xml filesThe Eclipse Tycho Tutorial at Vogella.com is suggests that we do: mvn org.eclipse.tycho:tycho-pomgenerator-plugin:generate-poms -DgroupId=triquetrum This creates the Dependency ProblemThe tutorial suggests running: mvn clean verify The tutorial states: "Tip: It is not recommended to use the mvn clean install command, instead you should use mvn clean verify . If you would use the install option, the build result would be installed in your local Maven repository and this can lead to build problems.
The tutorial states: "Warning If you try to execute this POM file, the build fail because you have not yet configured your dependencies."
bash-3.2$ rm -rf ~/.m2/repository/triquetrum/ bash-3.2$ mvn clean verify [INFO] Scanning for projects... [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [WARNING] No explicit target runtime environment configuration. Build is platform dependent. [INFO] Computing target platform for MavenProject: triquetrum:org.eclipse.triquetrum.common:1.0.0-SNAPSHOT @ /Users/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.common/pom.xml [INFO] Resolving dependencies of MavenProject: triquetrum:org.eclipse.triquetrum.common:1.0.0-SNAPSHOT @ /Users/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.common/pom.xml [INFO] {osgi.os=macosx, osgi.ws=cocoa, org.eclipse.update.install.features=true, osgi.arch=x86_64} [ERROR] Cannot resolve project dependencies: [ERROR] Software being installed: org.eclipse.triquetrum.common 1.0.0.qualifier [ERROR] Missing requirement: org.eclipse.triquetrum.common 1.0.0.qualifier requires 'package ptolemy.data 10.1.0' but it could not be found [ERROR] [ERROR] See http://wiki.eclipse.org/Tycho/Dependency_Resolution_Troubleshooting for help. [ERROR] Cannot resolve dependencies of MavenProject: triquetrum:org.eclipse.triquetrum.common:1.0.0-SNAPSHOT @ /Users/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.common/pom.xml: See log for details -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MavenExecutionException bash-3.2$ The So, we need to add these dependencies. POM-less Tycho buildsFurther reading finds POM-less Tycho builds. Be sure that you have mvn 3.3 or later installed. To use it, create <?xml version="1.0" encoding="UTF-8"?> <extensions> <extension> <groupId>org.eclipse.tycho.extras</groupId> <artifactId>tycho-pomless</artifactId> <version>0.24.0</version> </extension> </extensions> Then remove the Note that we have a Running More on the dependency Problem
Tycho Target Platform
Attach:TriqTargetDefinitions.png Δ triquetrumDepsJay Jay Billings suggested using something similar to https://github.com/jayjaybillings/ICEDeps I've created https://github.com/cxbrooks/triquetrumDeps To use it, be sure that you have mvn 3.3 or later installed, which is needed by POM-less Tycho builds. To check, run mvn --version git clone -b cxbrooks/eh/10/AddPom https://github.com/eclipse/triquetrum git clone https://github.com/cxbrooks/triquetrumDeps cd triquetrum mvn -N install mvn install Child module ... does not existIf you get this: cxh@terra triquetrum]$ mvn install [INFO] Scanning for projects... [ERROR] The build could not read 1 project -> [Help 1] [ERROR] [ERROR] The project triquetrum:org.eclipse.triquetrum.build:0.0.1-SNAPSHOT (/home/cxh/src/triquetrum/triquetrum/pom.xml) has 14 errors [ERROR] Child module /home/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.common/pom.xml of /home/cxh/src/triquetrum/triquetrum/pom.xml does not exist [ERROR] Child module /home/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.logging.dvp/pom.xml of /home/cxh/src/triquetrum/triquetrum/pom.xml does not exist [ERROR] Child module /home/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.processing.api/pom.xml of /home/cxh/src/triquetrum/triquetrum/pom.xml does not exist ... Then you need to upgrade maven to maven 3.3 or later. bundle org.apache.log4j 1.2.15 could not be found
[INFO] Resolving dependencies of MavenProject: triquetrum:org.eclipse.triquetrum.logging.dvp:1.0.0-SNAPSHOT @ /home/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.logging.dvp/.polyglot.build.properties [INFO] {osgi.os=linux, osgi.ws=gtk, org.eclipse.update.install.features=true, osgi.arch=x86_64} [ERROR] Cannot resolve project dependencies: [ERROR] Software being installed: org.eclipse.triquetrum.logging.dvp 1.0.0.qualifier [ERROR] Missing requirement: org.eclipse.triquetrum.logging.dvp 1.0.0.qualifier requires 'bundle org.apache.log4j 1.2.15' but it could not be found [ERROR] [ERROR] See http://wiki.eclipse.org/Tycho/Dependency_Resolution_Troubleshooting for help. [ERROR] Cannot resolve dependencies of MavenProject: triquetrum:org.eclipse.triquetrum.logging.dvp:1.0.0-SNAPSHOT @ /home/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.logging.dvp/.polyglot.build.properties: See log for details -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MavenExecutionException [cxh@terra triquetrum]$ Indeed, Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Dvp logging config Bundle-SymbolicName: org.eclipse.triquetrum.logging.dvp Bundle-Version: 1.0.0.qualifier Fragment-Host: org.apache.log4j;bundle-version="1.2.15" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 http://wiki.osgi.org/wiki/Fragment-Host says "Declares this bundle to be a Fragment, and specifies which parent bundle to attach to:
Fragment-Host: the.parent.bundle
May also have an optional version constraint:
Fragment-Host: the.parent.bundle;bundle-version=1.2.3
See 1 Understanding missing requirement messages (Eclipse Wiki) Solution! Add the following to <repositories> <repository> <id>eclipse-indigo</id> <url>http://archive.eclipse.org/tools/orbit/downloads/drops/R20100519200754/repository</url> <layout>p2</layout> </repository> </repositories> See
"For HTTP access, a p2 repository for this specific build can be found by adding 'repository' to the end of this download site URL, namely:
http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository/" Missing requirement: org.eclipse.triquetrum.workflow.actor.ui 1.0.0.qualifier requires 'bundle ptolemy.actor.lib.gui 11.0.0[INFO] Resolving dependencies of MavenProject: triquetrum:org.eclipse.triquetrum.workflow.actor.ui:1.0.0-SNAPSHOT @ /home/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.workflow.actor.ui/.polyglot.build.properties [INFO] {osgi.os=linux, osgi.ws=gtk, org.eclipse.update.install.features=true, osgi.arch=x86_64} [ERROR] Cannot resolve project dependencies: [ERROR] Software being installed: org.eclipse.triquetrum.workflow.actor.ui 1.0.0.qualifier [ERROR] Missing requirement: org.eclipse.triquetrum.workflow.actor.ui 1.0.0.qualifier requires 'bundle ptolemy.actor.lib.gui 11.0.0' but it could not be found The fix was to edit Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Actor UI integration Bundle-SymbolicName: org.eclipse.triquetrum.workflow.actor.ui Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.eclipse.swt, org.eclipse.swt.graphics, org.eclipse.swt.layout, org.eclipse.swt.widgets, org.osgi.framework;version="1.8.0" Bundle-Activator: org.eclipse.triquetrum.workflow.actor.ui.activator.Activator Require-Bundle: ptolemy.actor.lib.gui;bundle-version="11.0.0", ptolemy.core;bundle-version="11.0.0", ptolemy.gui;bundle-version="11.0.0", org.eclipse.triquetrum.workflow.ui;bundle-version="1.0.0" to Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Actor UI integration Bundle-SymbolicName: org.eclipse.triquetrum.workflow.actor.ui Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.eclipse.swt, org.eclipse.swt.graphics, org.eclipse.swt.layout, org.eclipse.swt.widgets, org.osgi.framework;version="1.8.0", org.eclipse.triquetrum.dependencies Bundle-Activator: org.eclipse.triquetrum.workflow.actor.ui.activator.Activator Require-Bundle: org.eclipse.triquetrum.workflow.ui;bundle-version="1.0.0" requires 'package org.eclipse.swt 0.0.0'[INFO] Computing target platform for MavenProject: triquetrum:org.eclipse.triquetrum.workflow.actor.ui:1.0.0-SNAPSHOT @ /home/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.workflow.actor.ui/.polyglot.build.properties [INFO] Resolving dependencies of MavenProject: triquetrum:org.eclipse.triquetrum.workflow.actor.ui:1.0.0-SNAPSHOT @ /home/cxh/src/triquetrum/triquetrum/org.eclipse.triquetrum.workflow.actor.ui/.polyglot.build.properties [INFO] {osgi.os=linux, osgi.ws=gtk, org.eclipse.update.install.features=true, osgi.arch=x86_64} [ERROR] Cannot resolve project dependencies: [ERROR] Software being installed: org.eclipse.triquetrum.workflow.actor.ui 1.0.0.qualifier [ERROR] Missing requirement: org.eclipse.triquetrum.workflow.actor.ui 1.0.0.qualifier requires 'package org.eclipse.swt 0.0.0' but it could not be found The fix here was to updated the <repositories> <repository> <id>eclipse-mars</id> <layout>p2</layout> <url>http://download.eclipse.org/releases/mars</url> </repository> <repository> <id>eclipse-indigo</id> <url>http://archive.eclipse.org/tools/orbit/downloads/drops/R20100519200754/repository</url> <layout>p2</layout> </repository> </repositories> org.eclipse.triquetrum.dependenciesAdded Missing requirement: org.eclipse.triquetrum.workflow.actor.ui 1.0.0.qualifier requires 'package org.eclipse.triquetrum.dependencies 0.0.0' but it could not be found Here, the fix was to edit Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Actor UI integration Bundle-SymbolicName: org.eclipse.triquetrum.workflow.actor.ui Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.eclipse.swt, org.eclipse.swt.graphics, org.eclipse.swt.layout, org.eclipse.swt.widgets, org.osgi.framework;version="1.8.0" Bundle-Activator: org.eclipse.triquetrum.workflow.actor.ui.activator.Activator Require-Bundle: org.eclipse.triquetrum.workflow.ui;bundle-version="1.0.0", org.eclipse.triquetrum.dependencies OSGi version 0.0.1.2016011812000 must have .qualifier qualifier for SNAPSHOT buildsNext up: [ERROR] Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:0.24.0:validate-version (default-validate-version) on project org.eclipse.triquetrum.dependencies: OSGi version 0.0.1.2016011812000 must have .qualifier qualifier for SNAPSHOT builds -> [Help 1] Solution: Edit Bundle-Version: 0.0.1.2016011812000 to Bundle-Version: 0.0.1.qualifier The constructor PtolemyModule(ClassLoader, ResourceBundle) is undefined[ERROR] Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:0.24.0:compile (default-compile) on project org.eclipse.triquetrum.workflow.actor.ui: Compilation failure: Compilation failure: [ERROR] /Users/cxh/git/triquetrum/org.eclipse.triquetrum.workflow.actor.ui/src/main/java/org/eclipse/triquetrum/workflow/actor/ui/activator/Activator.java:[25] [ERROR] PtolemyInjector.createInjector(new PtolemyModule(getClass().getClassLoader(), ResourceBundle.getBundle("org.eclipse.triquetrum.workflow.actor.ui.ActorModule"))); [ERROR] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [ERROR] The constructor PtolemyModule(ClassLoader, ResourceBundle) is undefined It looks like bash-3.2$ javap -classpath triquetrumDeps/org.eclipse.triquetrum.dependencies/deps/ptII/ptolemy.gui_11.0.0.201511291558.jar ptolemy.actor.injection.PtolemyModule Compiled from "PtolemyModule.java" public class ptolemy.actor.injection.PtolemyModule { public ptolemy.actor.injection.PtolemyModule(java.util.ResourceBundle); public java.util.HashMap<java.lang.String, java.lang.String> getBindings(); } bash-3.2$ osgi-2-0 build works under Linux, fails under MacOSXUnder Linux Under Linux /home/cxh/src/triq/osgi-2-0 cxh@swarmnuc2008:~/src/triq/osgi-2-0$ find ~/.m2 -name "*junit.framework*" cxh@swarmnuc2008:~/src/triq/osgi-2-0$ java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) cxh@swarmnuc2008:~/src/triq/osgi-2-0$ mvn --version Apache Maven 3.3.9 Maven home: /usr/share/maven Java version: 1.8.0_171, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-8-oracle/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.4.0-154-generic", arch: "amd64", family: "unix" cxh@swarmnuc2008:~/src/triq/osgi-2-0$ java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) cxh@swarmnuc2008:~/src/triq/osgi-2-0$ Under MacOSX: bash-3.2$ mvn --version Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T15:00:29-04:00) Maven home: /opt/local/share/java/maven3 Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "10.14.4", arch: "x86_64", family: "mac" bash-3.2$ java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) bash-3.2$ After upgrading Linux to mvn 3.6.1: wget http://ftp.wayne.edu/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip unzip apache-maven-3.6.1-bin.zip export PATH=/home/cxh/src/triq/osgi-2-0/apache-maven-3.6.1/bin:${PATH} Then I get the same problem! Solution: Downgrade MacOS to 3.3.9. See: Bug 545872 - Tycho fails to resolve on latest maven snapshot builds (3.6.1-SNAPSHOT ~0be26449fb96774be126a6ad245d1a98dc71907c) which says to downgrade to 3.6.0 Access restriction: The type 'Unsafe' is not API
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:1.0.0:compile (default-compile) on project ptolemy.core: Compilation\ failure: Compilation failure: [ERROR] /Users/cxh/src/triq/osgi-2-0/ptolemy.core/original-src/ptolemy/util/StringUtilities.java:[48] [ERROR] import sun.misc.Unsafe; [ERROR] ^^^^^^^^^^^^^^^ [ERROR] Access restriction: The type 'Unsafe' is not API (restriction on classpath entry '/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jd\ k/Contents/Home/jre/lib/rt.jar') [ERROR] /Users/cxh/src/triq/osgi-2-0/ptolemy.core/original-src/ptolemy/util/StringUtilities.java:[118] [ERROR] Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe"); [ERROR] ^^^^^^ [ERROR] Access restriction: The type 'Unsafe' is not API (restriction on classpath entry '/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jd\ k/Contents/Home/jre/lib/rt.jar') [ERROR] /Users/cxh/src/triq/osgi-2-0/ptolemy.core/original-src/ptolemy/util/StringUtilities.java:[120] [ERROR] Unsafe unsafe = (Unsafe) theUnsafe.get(null); [ERROR] ^^^^^^ However, the same code builds fine inside Eclipse. The failure is in I updated the references from Java 1.7 to Java 1.8, but that did not help. “API restriction error” when exporting Eclipse plugin with maven-tycho suggests adding <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-compiler-plugin</artifactId> <version>${tycho.version}</version> <configuration> <compilerArgument>-warn:+discouraged,forbidden</compilerArgument> <useProjectSettings>false</useProjectSettings> </configuration> </plugin> |