Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IntelliJ IDEA support #1054

Open
lppedd opened this issue Jun 20, 2022 · 53 comments
Open

IntelliJ IDEA support #1054

lppedd opened this issue Jun 20, 2022 · 53 comments

Comments

@lppedd
Copy link
Contributor

lppedd commented Jun 20, 2022

Hi all!
I'm currently trying to understand why Tycho isn't working in IntelliJ IDEA, testing with https://www.eclipse.org/mat/.
(see also issue https://youtrack.jetbrains.com/issue/IDEA-186628)

I have managed to debug the IDEA Maven implementation, and this is the call stack just before a dependency is not found.

image

At this point DependencyHelper#hasASolution returns false.

image

Tycho gets called as a Maven extension, via AbstractMavenLifecycleParticipant#afterProjectsRead

image

Question is, how should it be called? Which projects should be passed in the session? One at a time? All?
I'm a bit ignorant on how Tycho works so I'm sorry if my question seems a bit stupid.

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

Question is, how should it be called? Which projects should be passed in the session? One at a time? All?

It heavily depends on you project setup, but given you have a multi-module project with a common parent/aggregator it should be called on these projects.

If you call it on a single one it must work to call mvn at exactly this folder stand alone. If not you can again use mvn -pl -am but you need the tycho-build extension then!

@lppedd
Copy link
Contributor Author

lppedd commented Jun 20, 2022

Hi @laeubi, thanks for the quick answer.
So, I think we need to find an easier Tycho project to test with IDEA, MAT seems too complicated. Would https://github.com/eclipse/tycho/tree/master/demo/itp01 be ok?

But anyway

should be called on these projects

Are you referring to all the non-parent projects?

tycho-build extension

I think this should not be required so I'll leave this solution aside for now.

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

Beside the demos, there are also a lot of integration test that could be used as an executable example.

I think this should not be required so I'll leave this solution aside for now.

Then IntelliJ must be "smart enough" to compute the set of required projects itself :-)

Are you referring to all the non-parent projects?

In a very simplified fashion Tycho works this way:

  1. read all reactor projects
  2. resolve the target platform(s)
  3. resolve any dependencies between reactor projects and target platform content (probably taking pom specified stuff into account)
  4. Injecting the dependencies into the maven model
  5. Then the "normal" maven build takes over

So if you just run it on one project A, there might be the problem that you need also project B+C but Tycho (or more specifically maven) won't know about them and the build fails.

So either this one project must be self-contained (most probably not the case for any non trivial example), you need to know the required projects in advance (hard to guess for any non trivial example), or you use the tycho-build extension with -pl -am to compute the closure for your single project, see for this https://github.com/eclipse/tycho/tree/master/tycho-its/projects/reactor.makeBehaviour as an example and its corresponding test suite https://github.com/eclipse/tycho/blob/master/tycho-its/src/test/java/org/eclipse/tycho/test/reactor/makeBehaviour/MavenReactorMakeOptionsTest.java

As an alternative one can always build "all" projects (where all of course could be a subset of all possible maven projects in a given code repository).

Just another note: Its actually that ItelliJ do not support PDE than it not support Tycho as Tychos primary intend is to build PDE Artifacts with Maven so Eclipise is actually not using Tycho to build such a project!

@lppedd
Copy link
Contributor Author

lppedd commented Jun 20, 2022

Ok I'll try to wrap my head around what you wrote, thanks 😄
Regarding PDE, IntellIJ supports PDE using the eclipse-pde-partial plugin, but Tycho support is needed to support automatic dependency resolution.

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

Regarding PDE, IntellIJ supports PDE using the eclipse-pde-partial plugin, but Tycho support is needed to support automatic dependency resolution.

Automatic dependency resolution is what PDE does, so no Tycho there either (this is performed by P2).

Just let me know when anything is unclear.

@lppedd
Copy link
Contributor Author

lppedd commented Jun 20, 2022

@laeubi so what you're saying is that I could run Maven via command line and then use the standard PDE support in IntelliJ?

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

I don't know much about IntelliJ PDE support to guess if that works, but what I wanted to say is that any Plugin that claims to support PDE, should also support automatic dependency resolution based on a target platform and the manifest data. Otherwise it does not really supports PDE, but probably can read/write some of its meta-data :-)

@lppedd
Copy link
Contributor Author

lppedd commented Jun 20, 2022

@laeubi oh ok! I mean, the plugin I linked supports reading the target configuration file and the manifest, and is capable of generating the correct IntelliJ module structure (I have used it for a big RCP application).

Being that Tycho is basically an extension to Maven, IntelliJ tries to setup the project using Maven, but fails.

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

Alright, maybe then one should instruct InteliJ to not try using it as a maven project? I don't know how InteliJ setup the maven world, at laest you can do some testing yourself by issuing mvn dependency:tree in some folders to see whats going on at the maven/tycho level.

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

By the way, currently there is a special property passed by m2e to a maven build that is read by Tycho to skip the extension in that case, is there also such property for intelij?

https://github.com/eclipse/tycho/blob/7b0ea29597e024fc71d850e82daa65d1e0b15801/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java#L269-L275

Please don't use tycho.mode=maven as it is legacy and sceduled for removal:

@lppedd
Copy link
Contributor Author

lppedd commented Jun 20, 2022

I'm doing some progress with debugging the demo project.
That project points to https://download.eclipse.org/releases/2022-06/

<repositories>
 <repository>
   <id>eclipse</id>
   <layout>p2</layout>
   <url>https://download.eclipse.org/releases/2022-06</url>
 </repository>
</repositories>

And the P2 resolver uses some suffixes to look into the repository

image

However it cannot resolve it. Any idea what I'm missing?

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

However it cannot resolve it. Any idea what I'm missing?

What is the exact error? Can you run the project on the command-line with mvn clean install ?

@lppedd
Copy link
Contributor Author

lppedd commented Jun 20, 2022

What is the exact error?

image

mvn clean install

Yes it works 👀

[INFO] Fetching p2.index from https://download.eclipse.org/releases/2022-06/ (122B)
[INFO] Adding repository https://download.eclipse.org/releases/2022-06
[INFO] Fetching compositeContent.jar from https://download.eclipse.org/releases/2022-06/ (481B)
[INFO] Fetching compositeContent.xml from https://download.eclipse.org/technology/epp/packages/2022-06/ (442B)
[INFO] Fetching content.jar from https://download.eclipse.org/technology/epp/packages/2022-06/202206091200/ (87.05kB)
[INFO] Fetching p2.index from https://download.eclipse.org/releases/2022-06/202206151000/ (140B)
[INFO] Fetching content.xml.xz from https://download.eclipse.org/releases/2022-06/202206151000/ (792.86kB)
[INFO] Resolving dependencies of MavenProject: tycho.demo.itp01:tycho.demo.itp01:1.0.0-SNAPSHOT @ C:\Users\edoardo.luppi\Downloads\tycho-master\demo\itp01\tycho.demo.itp01\pom.xml

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

Have you tried letting the code go on? Repositories are sadly queried on "best guess" sometimes and some failures are allowed, do you see the info print outs also in IntelliJ?

@lppedd
Copy link
Contributor Author

lppedd commented Jun 20, 2022

It seems like there is no MetadataRepositoryFactory that actually checks remote URIs.
All the ones I've seen check local JARs.

java.lang.NoClassDefFoundError: Could not initialize class org.apache.hc.client5.http.psl.PublicSuffixMatcherLoader

@laeubi
Copy link
Member

laeubi commented Jun 20, 2022

I don't know how the InteliJ maven server works, but this seems something is not loaded/isolated as it should. Tycho start an internal OSGi Framework currently so if intelliJ reuses classloaders and/or mess up classpath you are maybe out of luck then.... but you can use mvnDebug to debug the commandline call and see what is different there compared to InteliJ.

@lppedd
Copy link
Contributor Author

lppedd commented Jun 24, 2022

Got to the original error:

loader constraint violation: when resolving method 'org.slf4j.ILoggerFactory org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()' the class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @58d82974 of the current class, org/slf4j/LoggerFactory, and the class loader 'app' for the method's defining class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type org/slf4j/ILoggerFactory used in the signature (org.slf4j.LoggerFactory is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @58d82974, parent loader org.codehaus.plexus.classworlds.realm.ClassRealm @4f554509; org.slf4j.impl.StaticLoggerBinder is in unnamed module of loader 'app')

It seems there are two conflicting versions of SLF4J. Sad 😢

@laeubi
Copy link
Member

laeubi commented Jun 24, 2022

This might indicate the IntelliJ do not properly isolate class realms for extensions here.

@lppedd
Copy link
Contributor Author

lppedd commented Jun 24, 2022

@laeubi yeah, probably. Do you think workarounds exists for this issue? Like for example manually loading the same class files in the EquinoxClassLoader classloader.

@laeubi
Copy link
Member

laeubi commented Jun 24, 2022

Not really, maybe IntelliJ is missing the core-exports are missing here but that's hard to guess without deeper knowledge of that code. But I think you now have a good test-case for the IntelliJ people to investigate further on this issue.

@bric3
Copy link

bric3 commented Jun 24, 2022

This might indicate the IntelliJ do not properly isolate class realms for extensions here.

To be fair, IJ isn't doing anything improperly, it's not OSGi based. So different trade-offs. As far as I know they IJ is based on pico container in regard of plugins.

@laeubi
Copy link
Member

laeubi commented Jun 24, 2022

@bric3 that has nothing to do with OSGi or PicoContainer, the Tycho extension is starting an embedded OSGi framework (Maven itself do not use OSGi in any way...) and exports some stuff from its class realm into this framework, so if the classrealm is not setup property such issues can arise.

@lppedd
Copy link
Contributor Author

lppedd commented Jun 24, 2022

@bric3 so there is a little difference here regarding how IntelliJ spawns the Maven server. It's not really a plugin, but it seems a new instance of the JVM is created.

https://github.com/JetBrains/intellij-community/blob/43bae47c6d4b65ded6969111034c172324dde329/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java#L474-L484

Also I see some code related to realms.
https://github.com/JetBrains/intellij-community/blob/1e1f83264bbb4cb7ba3ed08fe0915aa990231611/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java#L164

@lppedd
Copy link
Contributor Author

lppedd commented Jun 24, 2022

image

Then, a DefaultPlexusContainer spawned with that AppClassLoader is used to read lifecycle partecipants.

image

@lppedd
Copy link
Contributor Author

lppedd commented Jun 24, 2022

Yep, confirmed.

image

@bric3
Copy link

bric3 commented Jun 24, 2022

@bric3 that has nothing to do with OSGi or PicoContainer, the Tycho extension is starting an embedded OSGi framework (Maven itself do not use OSGi in any way...) and exports some stuff from its class realm into this framework, so if the classrealm is not setup property such issues can arise.

Ah ok i understand your point, thanks for the clarification.

@lppedd
Copy link
Contributor Author

lppedd commented Aug 20, 2022

I'm trying out again IDEA.
I'm receiving exceptions like this one:

java.lang.RuntimeException: Failed to load p2 repository with ID 'dtp' from location http://my-url:8081/nexus/content/repositories/zeus/
	at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.loadMetadataRepository(TargetPlatformFactoryImpl.java:297)
	at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.gatherExternalInstallableUnits(TargetPlatformFactoryImpl.java:267)
	at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:169)
	at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:134)
	at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:1)
	at org.eclipse.tycho.p2.manager.ReactorRepositoryManagerImpl.computePreliminaryTargetPlatform(ReactorRepositoryManagerImpl.java:90)
	at org.eclipse.tycho.p2.resolver.P2DependencyResolver.computePreliminaryTargetPlatform(P2DependencyResolver.java:224)
	at org.eclipse.tycho.core.resolver.DefaultTychoResolver.resolveProject(DefaultTychoResolver.java:125)
	at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.lambda$resolveProjects$0(TychoMavenLifecycleParticipant.java:157)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.WhileOps$1$1.accept(WhileOps.java:99)
	at java.base/java.util.Collections$2.tryAdvance(Collections.java:4747)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
	at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.resolveProjects(TychoMavenLifecycleParticipant.java:188)
	at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:114)
	at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.loadExtensions(Maven3XServerEmbedder.java:1026)
	at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.lambda$doResolveProject$1(Maven3XServerEmbedder.java:844)
	at org.jetbrains.idea.maven.server.Maven3ServerEmbedder$1.run(Maven3ServerEmbedder.java:367)
	at org.jetbrains.idea.maven.server.Maven3ServerEmbedder.executeWithSessionScope(Maven3ServerEmbedder.java:442)
	at org.jetbrains.idea.maven.server.Maven3ServerEmbedder.executeWithMavenSession(Maven3ServerEmbedder.java:375)
	at org.jetbrains.idea.maven.server.Maven3ServerEmbedder.executeWithMavenSession(Maven3ServerEmbedder.java:364)
	at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.doResolveProject(Maven3XServerEmbedder.java:802)
	at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.resolveProject(Maven3XServerEmbedder.java:767)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
	at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
	at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.eclipse.equinox.p2.core.ProvisionException: Error while reading from repository: http://my-url:8081/nexus/content/repositories/zeus/site.xml.
	at org.eclipse.equinox.internal.p2.updatesite.UpdateSite.loadActualSiteFile(UpdateSite.java:255)
	at org.eclipse.equinox.internal.p2.updatesite.UpdateSite.load(UpdateSite.java:155)
	at org.eclipse.equinox.internal.p2.updatesite.metadata.UpdateSiteMetadataRepositoryFactory.initializeRepository(UpdateSiteMetadataRepositoryFactory.java:108)
	at org.eclipse.equinox.internal.p2.updatesite.metadata.UpdateSiteMetadataRepositoryFactory.load(UpdateSiteMetadataRepositoryFactory.java:62)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:63)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:787)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:685)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:110)
	at org.eclipse.tycho.p2.remote.RemoteMetadataRepositoryManager.loadRepository(RemoteMetadataRepositoryManager.java:63)
	at org.eclipse.tycho.p2.remote.RemoteMetadataRepositoryManager.loadRepository(RemoteMetadataRepositoryManager.java:55)
	at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.loadMetadataRepository(TargetPlatformFactoryImpl.java:293)

The repository has been defined under repositories

<repository>
	<id>dtp</id>
	<url>http://my-url:8081/nexus/content/repositories/zeus/</url>
	<layout>p2</layout>
</repository>

Why is Equinox looking for a site.xml? Obviously I don't have a site.xml in that Nexus repository.

@laeubi
Copy link
Member

laeubi commented Aug 22, 2022

Nexus has a known bug with producing wrong P2 Metadata, so you probably ant to check with an official repository first.

@lppedd
Copy link
Contributor Author

lppedd commented Aug 22, 2022

@laeubi in the end it was still related to

java.lang.NoClassDefFoundError: Could not initialize class org.apache.hc.client5.http.psl.PublicSuffixMatcherLoader

What I'm doing now is use offline p2 repositories only, so no HTTP client is used.

@laeubi
Copy link
Member

laeubi commented Aug 22, 2022

Then something seems wrong with how intelij setup the classpath for the plugin.

@lppedd
Copy link
Contributor Author

lppedd commented Aug 22, 2022

@laeubi yep! We had already discussed about this maybe a month ago. This time I wasn't immediately able to capture the internal Equinox classloader exception, so I thought it started working.

@howlger
Copy link
Contributor

howlger commented Sep 26, 2022

Ok I'll try to wrap my head around what you wrote, thanks 😄 Regarding PDE, IntellIJ supports PDE using the eclipse-pde-partial plugin, but Tycho support is needed to support automatic dependency resolution.

The so-called "Eclipse PDE Partial IDEA Plugin" seems to be not related to Eclipse PDE at all, but to be just a fake not based on Eclipse PDE, missing basic Eclipse PDE functionality, violating both trademarks, Eclipse® and PDE™. I've seen a couple of Stack Overflow questions showing that people have wasted a lot of time with this. You as an author of the so-called "Eclipse PDE Partial IDEA Plugin" should know that.

@laeubi
Copy link
Member

laeubi commented Sep 26, 2022

@howlger I can't tell anything about that plugin becuase I don't use it but @lppedd don't seem to be the author but a contributor to the project (mostly: formatting if I get ti right):

https://github.com/JaneWardSandy/eclipse-pde-partial-idea/commits?author=lppedd

@lppedd
Copy link
Contributor Author

lppedd commented Sep 26, 2022

@howlger I have no idea how the plugins works internally, as I'm not the author. I know it reproduces some of its functionalities, e.g. the Target Platform, and provides inspections to warn about wrong usages of packages.

@lppedd
Copy link
Contributor Author

lppedd commented Sep 26, 2022

I've seen a couple of Stack Overflow questions showing that people have wasted a lot of time with this

This happens if you don't know the scope of that plugin. It doesn't try to reproduce PDE in its entirety, it does try to allow dependency resolution in the context of IntelliJ IDEA.

I think this is out of scope for this issue tho.

@howlger
Copy link
Contributor

howlger commented Sep 26, 2022

To be clear, @lppedd is not a committer and therefore not the author (not responsible for the naming), but a contributor and therefore an author with some knowledge how it works.

I doubt that your claim that "IntelliJ supports PDE" is true. It looks to me like that the IntelliJ plugin you mentioned is not a partial Eclipse PDE, but something that is 0% Eclipse PDE just trying to fake some Eclipse PDE features. If so, that would be unfair, both to the users who are being fooled by the name wasting their time and to the Eclipse PDE project.

It's unclear why you reported this issue to Tycho. How can the problem that IntelliJ IDEA does not support Maven plugins like Tycho be solved by Tycho?

@lppedd
Copy link
Contributor Author

lppedd commented Sep 26, 2022

@howlger

It's unclear why you reported this issue to Tycho

This was meant is a way to track progress, plus as a way to get help from @laeubi if possible.
When a Tycho user searches "tycho + intellij" this is probably what comes up.

We can convert this to a discussion if it makes it not a problem anymore for you.
If you're worried about the name of the plugin, I can only say contact the author as I have zero power on that, I literally only applied EditorConfig to the project.

@lppedd
Copy link
Contributor Author

lppedd commented Sep 26, 2022

And a personal note, I successfully used the plugin to develop a PDE-based RCP application.
As I was saying earlier, it does not offer all the functionality, but it lets you setup the workspace in IJ at least.
The name is not ok? Let's open an issue on the plugin page and ask for it to be changed, it takes 30 minutes to do it probably.

@lppedd
Copy link
Contributor Author

lppedd commented Sep 26, 2022

fake some Eclipse PDE features

Well that's obvious I'd say.

If so, that would be unfair, both to the users who are being fooled by the name wasting their time and to the Eclipse PDE project

To be fair I'd only thank people trying to (fake) support PDE on other IDEs. I'll repeat myself: if you don't like the name, ask for it to be changed, but ask that to whom has the power to do it.

On my side I can't do anything more. I patched IJ to support Tycho, I think my work is done

@laeubi
Copy link
Member

laeubi commented Sep 26, 2022

I patched IJ to support Tycho, I think my work is done

Would you mind adding a new section to https://github.com/eclipse-tycho/tycho/wiki that explains how Tycho can be used with InteliJ?

@lppedd
Copy link
Contributor Author

lppedd commented Sep 26, 2022

explains how Tycho can be used with InteliJ

I can do it, but I think it's still not the time. For reference, to get Tycho on IJ a "personal" Community build is necessary as of now.
See JetBrains/intellij-community#2127

  1. clone IntelliJ Community
  2. cherry pick my PR's commits on your own branch
  3. build IntelliJ from that branch
  4. test it out. Slight code adjustments may be required depending on the use-case (e.g. resolving dependencies for an additional packaging type)

When I'll have more free time I'll implement what's described in the PR, and maybe the PR will be mergeable.

@howlger
Copy link
Contributor

howlger commented Sep 26, 2022

@lppedd I didn't say I dislike the name, and I didn't say I'm against supporting development of Eclipse plugins in other IDEs. Do not make conclusions from something I didn't say. Please discuss this with others. I'm not okay with people using a borrowed name and fooling others into wasting their time. I wish people would value the work of others and trademarks were not even needed. I know the plugin you mentioned only from Stack Overflow questions showing conceptual problems of this plugin and some reasons for dogfooding.

@bric3
Copy link

bric3 commented Sep 26, 2022

I didn't say I dislike the name, and I didn't say I'm against supporting development of Eclipse plugins in other IDEs. Do not make conclusions from something I didn't say

The way it was phrased in the earlier comment led me to the same conclusion as @lppedd, thanks for the clarification.

I'm not okay with people using a borrowed name and fooling others into wasting their time.

I don't see the problem in that, I discovered this problem because it has exactly the key words I was searching : "Eclipse" "PDE". Also no one else was doing a similar work to begin with, i.e. to enable the development of Eclipse based applications or plugin using IntelliJ IDEA, and clearly I'm thanking a lot the main author of this plugin for this work he did mostly alone.
Regarding the questions on Stack Overflow, every product well documented or not at all have questions on SO. Why not contributing back to this plugin to address the problems you've identified.

@lppedd
Copy link
Contributor Author

lppedd commented Sep 26, 2022

@howlger well you came in pretty aggressively with trademark violation allegations towards me, just because I mentioned a plugin you found to have issues.

I take trademark seriously like you and if there is a problem on that level it should be solved.
I would just like to respond to

I'm not okay with people using a borrowed name and fooling others into wasting their time

How do people lookup PDE support in IntelliJ? Searching "Eclipse PDE IntelliJ".
Literally zero docs on the Eclipse site pointing to a solution or just saying "we don't do that", only 10-15 years old blog posts. You would be scared to know how much time I wasted trying to setup a working workspace on something that isn't Eclipse prior to knowing there was a plugin.
And an open source, free, plugin that you can test out in 5 minutes is something that make people lose time...
Yes, the docs of that plugin needs to explain better what "supporting PDE" means, I agree on that, but still, it's a single person experimenting, and in my opinion with success since I've used it.

@jhonnen
Copy link
Contributor

jhonnen commented Sep 26, 2022

Got to the original error:

loader constraint violation: when resolving method 'org.slf4j.ILoggerFactory org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()' the class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @58d82974 of the current class, org/slf4j/LoggerFactory, and the class loader 'app' for the method's defining class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type org/slf4j/ILoggerFactory used in the signature (org.slf4j.LoggerFactory is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @58d82974, parent loader org.codehaus.plexus.classworlds.realm.ClassRealm @4f554509; org.slf4j.impl.StaticLoggerBinder is in unnamed module of loader 'app')

It seems there are two conflicting versions of SLF4J. Sad 😢

I get the same error when executing a tycho build via maven-embedder with the following app classpath and tycho 2.7.4:

'org.apache.maven:maven-embedder:3.8.6'
'org.apache.maven:maven-compat:3.8.6'
'org.slf4j:slf4j-simple:1.7.36'

The problematic slf4j dependency seems to be necessary, otherwise you don't get any output from maven.

@howlger
Copy link
Contributor

howlger commented Sep 26, 2022

@howlger well you came in pretty aggressively with trademark violation allegations towards me, just because I mentioned a plugin you found to have issues.

None of this is true. What exactly make you say this? Please read the Community Code of Conduct. I wrote "seems to be" as a reply to a claim of yours that I doubt. I don't even want to take my time to find out whether trademarks are actually being violated or not. If you take it as seriously as I do, then you don't care at all. ;)

@bric3
Copy link

bric3 commented Sep 26, 2022

While there's a disagreement on the way things were written, let's stop discussing this matter here as it does not help the case at hand, i.e. having IntelliJ IDEA support of Tycho based maven projects.
If this needs to be discussed I believe this should be followed in in the discussions.

@jhonnen
Copy link
Contributor

jhonnen commented Sep 27, 2022

Tycho 3.0.0-SNAPSHOT seems to work 👍, maybe because of this?

p.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,
"javax.security.auth.x500;version=\"1.3.0\", org.slf4j;version=\"1.7.37\"");

@lppedd
Copy link
Contributor Author

lppedd commented Nov 4, 2022

Just to align the Tycho guys, version 4.0.0 doesn't work anymore with IDEA, at least the SNAPSHOTs.

P2ResolverFactoryImpl: seems like an old version of the service is injected.
Here it's trying to invoke getService(Class), but we only have getService(String).

image

Did something change in the handling of Equinox dependencies?

@lppedd
Copy link
Contributor Author

lppedd commented Nov 4, 2022

For completeness, this is the errors I get from the debug log.

[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.tycho.core.shared

[ERROR] Could not resolve module: org.eclipse.tycho.core.shared [4]
  Unresolved requirement: Require-Bundle: org.eclipse.core.runtime; bundle-version="3.26.0"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.tycho.core.shared [4]
  Unresolved requirement: Require-Bundle: org.eclipse.core.runtime; bundle-version="3.26.0"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.tycho.embedder-api

[ERROR] Could not resolve module: org.eclipse.tycho.embedder-api [7]
  Unresolved requirement: Import-Package: org.apache.maven.execution
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.tycho.embedder-api [7]
  Unresolved requirement: Import-Package: org.apache.maven.execution
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.equinox.p2.updatesite

[ERROR] Could not resolve module: org.eclipse.equinox.p2.updatesite [29]
  Unresolved requirement: Import-Package: org.eclipse.equinox.p2.publisher.eclipse
    -> Export-Package: org.eclipse.equinox.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.touchpoint.eclipse,  org.eclipse.equinox.p2.updatesite,  org.eclipse.equinox.p2.repository.tools"
       org.eclipse.equinox.p2.publisher.eclipse [30]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
              org.eclipse.equinox.frameworkadmin.equinox [31]
                Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
         Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="[2.0.0,3.0.0)"
           -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
              org.eclipse.equinox.simpleconfigurator.manipulator [32]
                Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
                  -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.p2.publisher.eclipse
    -> Export-Package: org.eclipse.equinox.internal.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.repository.tools,  org.eclipse.equinox.p2.updatesite,  org.eclipse.pde.build"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.equinox.p2.updatesite [29]
  Unresolved requirement: Import-Package: org.eclipse.equinox.p2.publisher.eclipse
    -> Export-Package: org.eclipse.equinox.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.touchpoint.eclipse,  org.eclipse.equinox.p2.updatesite,  org.eclipse.equinox.p2.repository.tools"
       org.eclipse.equinox.p2.publisher.eclipse [30]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
              org.eclipse.equinox.frameworkadmin.equinox [31]
                Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
         Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="[2.0.0,3.0.0)"
           -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
              org.eclipse.equinox.simpleconfigurator.manipulator [32]
                Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
                  -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.p2.publisher.eclipse
    -> Export-Package: org.eclipse.equinox.internal.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.repository.tools,  org.eclipse.equinox.p2.updatesite,  org.eclipse.pde.build"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.equinox.p2.publisher.eclipse

[ERROR] Could not resolve module: org.eclipse.equinox.p2.publisher.eclipse [30]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
    -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
       org.eclipse.equinox.frameworkadmin.equinox [31]
         Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
  Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="[2.0.0,3.0.0)"
    -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
       org.eclipse.equinox.simpleconfigurator.manipulator [32]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.equinox.p2.publisher.eclipse [30]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
    -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
       org.eclipse.equinox.frameworkadmin.equinox [31]
         Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
  Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="[2.0.0,3.0.0)"
    -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
       org.eclipse.equinox.simpleconfigurator.manipulator [32]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.equinox.frameworkadmin.equinox

[ERROR] Could not resolve module: org.eclipse.equinox.frameworkadmin.equinox [31]
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.equinox.frameworkadmin.equinox [31]
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.equinox.simpleconfigurator.manipulator

[ERROR] Could not resolve module: org.eclipse.equinox.simpleconfigurator.manipulator [32]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
    -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
       org.eclipse.equinox.frameworkadmin.equinox [31]
         Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.equinox.simpleconfigurator.manipulator [32]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
    -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
       org.eclipse.equinox.frameworkadmin.equinox [31]
         Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.equinox.p2.director.app [38]
  Unresolved requirement: Import-Package: org.eclipse.equinox.p2.core; version="[2.8.0,3.0.0)"
  Unresolved requirement: Import-Package: org.bouncycastle.openpgp
    -> Export-Package: org.bouncycastle.openpgp; bundle-symbolic-name="bcpg"; bundle-version="1.72.1"; version="1.72.1"; uses:="org.bouncycastle.asn1,org.bouncycastle.bcpg,org.bouncycastle.bcpg.attr,org.bouncycastle.bcpg.sig,org.bouncycastle.gpg,org.bouncycastle.openpgp.operator,org.bouncycastle.util"
       bcpg [58]
         Unresolved requirement: Import-Package: org.bouncycastle.asn1; version="1.72.1"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.equinox.p2.director.app

[ERROR] Could not resolve module: org.eclipse.equinox.p2.director.app [38]
  Unresolved requirement: Import-Package: org.eclipse.equinox.p2.core; version="[2.8.0,3.0.0)"
  Unresolved requirement: Import-Package: org.bouncycastle.openpgp
    -> Export-Package: org.bouncycastle.openpgp; bundle-symbolic-name="bcpg"; bundle-version="1.72.1"; version="1.72.1"; uses:="org.bouncycastle.asn1,org.bouncycastle.bcpg,org.bouncycastle.bcpg.attr,org.bouncycastle.bcpg.sig,org.bouncycastle.gpg,org.bouncycastle.openpgp.operator,org.bouncycastle.util"
       bcpg [58]
         Unresolved requirement: Import-Package: org.bouncycastle.asn1; version="1.72.1"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.equinox.p2.repository.tools

[ERROR] Could not resolve module: org.eclipse.equinox.p2.repository.tools [39]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.p2.publisher.eclipse
    -> Export-Package: org.eclipse.equinox.internal.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.repository.tools,  org.eclipse.equinox.p2.updatesite,  org.eclipse.pde.build"
       org.eclipse.equinox.p2.publisher.eclipse [30]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
              org.eclipse.equinox.frameworkadmin.equinox [31]
                Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
         Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="[2.0.0,3.0.0)"
           -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
              org.eclipse.equinox.simpleconfigurator.manipulator [32]
                Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
                  -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
  Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="2.0.0"
    -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
  Unresolved requirement: Import-Package: org.eclipse.equinox.p2.publisher.eclipse
    -> Export-Package: org.eclipse.equinox.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.touchpoint.eclipse,  org.eclipse.equinox.p2.updatesite,  org.eclipse.equinox.p2.repository.tools"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.equinox.p2.repository.tools [39]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.p2.publisher.eclipse
    -> Export-Package: org.eclipse.equinox.internal.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.repository.tools,  org.eclipse.equinox.p2.updatesite,  org.eclipse.pde.build"
       org.eclipse.equinox.p2.publisher.eclipse [30]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
              org.eclipse.equinox.frameworkadmin.equinox [31]
                Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
         Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="[2.0.0,3.0.0)"
           -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
              org.eclipse.equinox.simpleconfigurator.manipulator [32]
                Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
                  -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
  Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="2.0.0"
    -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
  Unresolved requirement: Import-Package: org.eclipse.equinox.p2.publisher.eclipse
    -> Export-Package: org.eclipse.equinox.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.touchpoint.eclipse,  org.eclipse.equinox.p2.updatesite,  org.eclipse.equinox.p2.repository.tools"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.core.runtime

[ERROR] Could not resolve module: org.eclipse.core.runtime [45]
  Unresolved requirement: Require-Bundle: javax.inject; bundle-version="1.0.0"; visibility:="reexport"; resolution:="optional"
  Unresolved requirement: Require-Bundle: org.eclipse.core.contenttype; bundle-version="[3.3.0,4.0.0)"; visibility:="reexport"
    -> Bundle-SymbolicName: org.eclipse.core.contenttype; bundle-version="3.8.200.v20220817-1539"; tags:List<String>="osgi.connect"; singleton:="true"
       org.eclipse.core.contenttype [55]
         Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="[3.13.0,4.0.0)"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.core.runtime [45]
  Unresolved requirement: Require-Bundle: javax.inject; bundle-version="1.0.0"; visibility:="reexport"; resolution:="optional"
  Unresolved requirement: Require-Bundle: org.eclipse.core.contenttype; bundle-version="[3.3.0,4.0.0)"; visibility:="reexport"
    -> Bundle-SymbolicName: org.eclipse.core.contenttype; bundle-version="3.8.200.v20220817-1539"; tags:List<String>="osgi.connect"; singleton:="true"
       org.eclipse.core.contenttype [55]
         Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="[3.13.0,4.0.0)"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.equinox.p2.touchpoint.eclipse [49]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.simpleconfigurator.manipulator
    -> Export-Package: org.eclipse.equinox.internal.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.touchpoint.eclipse"
       org.eclipse.equinox.simpleconfigurator.manipulator [32]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
              org.eclipse.equinox.frameworkadmin.equinox [31]
                Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
  Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="[2.0.0,3.0.0)"
    -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
  Unresolved requirement: Import-Package: org.eclipse.equinox.p2.publisher.eclipse; resolution:="optional"
    -> Export-Package: org.eclipse.equinox.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.touchpoint.eclipse,  org.eclipse.equinox.p2.updatesite,  org.eclipse.equinox.p2.repository.tools"
       org.eclipse.equinox.p2.publisher.eclipse [30]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.equinox.p2.touchpoint.eclipse

[ERROR] Could not resolve module: org.eclipse.equinox.p2.touchpoint.eclipse [49]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.simpleconfigurator.manipulator
    -> Export-Package: org.eclipse.equinox.internal.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.touchpoint.eclipse"
       org.eclipse.equinox.simpleconfigurator.manipulator [32]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
              org.eclipse.equinox.frameworkadmin.equinox [31]
                Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="3.16.0"
  Unresolved requirement: Import-Package: org.eclipse.equinox.simpleconfigurator.manipulator; version="[2.0.0,3.0.0)"
    -> Export-Package: org.eclipse.equinox.simpleconfigurator.manipulator; bundle-symbolic-name="org.eclipse.equinox.simpleconfigurator.manipulator"; bundle-version="2.2.0.v20210315-2228"; version="2.0.0"
  Unresolved requirement: Import-Package: org.eclipse.equinox.p2.publisher.eclipse; resolution:="optional"
    -> Export-Package: org.eclipse.equinox.p2.publisher.eclipse; bundle-symbolic-name="org.eclipse.equinox.p2.publisher.eclipse"; bundle-version="1.4.100.v20220420-1427"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.directorywatcher,  org.eclipse.equinox.p2.extensionlocation,  org.eclipse.equinox.p2.touchpoint.eclipse,  org.eclipse.equinox.p2.updatesite,  org.eclipse.equinox.p2.repository.tools"
       org.eclipse.equinox.p2.publisher.eclipse [30]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.frameworkadmin.equinox
           -> Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox; bundle-symbolic-name="org.eclipse.equinox.frameworkadmin.equinox"; bundle-version="1.2.200.v20220315-2155"; version="0.0.0"; x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] org.eclipse.core.contenttype

[ERROR] Could not resolve module: org.eclipse.core.contenttype [55]
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="[3.13.0,4.0.0)"
[ERROR] [2ed8f1c1-1dab-4327-8851-075163dc79c9][extension>org.eclipse.tycho:tycho-maven-plugin:4.0.0-SNAPSHOT] FrameworkEvent ERROR

[ERROR] Could not resolve module: org.eclipse.core.contenttype [55]
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="[3.13.0,4.0.0)"

@laeubi
Copy link
Member

laeubi commented Nov 5, 2022

Here it's trying to invoke getService(Class), but we only have getService(String)

getService(Class key) is a default implemented interface method.

@lppedd
Copy link
Contributor Author

lppedd commented Nov 5, 2022

@laeubi hi! Yup I checked. But it was added in equinox.p2.core 2.6. I suspect it's loading an old version of equinox p2 for some reason.

Where do you specify the version constraints? E.g. I want only 2.9+.
Edit: nevermind found them

@lppedd
Copy link
Contributor Author

lppedd commented Nov 5, 2022

Yes, the interface org.eclipse.equinox.p2.core.IProvisioningAgent is coming from equinox p2 core 2.4.100.
Can't understand why. This is giving me headaches lol

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants