vert-x3 / vertx-examples

Vert.x examples
Apache License 2.0
3.55k stars 2.09k forks source link

Project fails to build in IntelliJ IDEA because cannot load OSGI plugin #54

Closed purplefox closed 9 years ago

purplefox commented 9 years ago

Project... rebuild all gives:

Error:osgi: [osgi-examples] Failed to load plugin org.apache.felix.ipojo.bnd.PojoizationPlugin;, error: org.apache.felix.ipojo.bnd.PojoizationPlugin not found, parent: java.net.URLClassLoader@45ee12a7 urls:[] exception:java.lang.ClassNotFoundException: org.apache.felix.ipojo.bnd.PojoizationPlugin

This means I can't run the examples in the IDE

cescoffier commented 9 years ago

How do you import the project in your IDE ?

If I import it as a Maven projet I don't have any issue.

purplefox commented 9 years ago

Yes, I originally imported as a Maven project.

If I try again from scratch as a new user would after cloning the project, I get a further issue:

Error:(26, 16) java: cannot find symbol symbol: class ProcessorServiceVertxEBProxy location: interface io.vertx.examples.service.ProcessorService

This I guess is because the service proxy classes need generating.

This is going to confuse users. I think it's important that users can get going with vertx-examples straight away without any extra steps, as this will be the first thing they see in Vert.x

cescoffier commented 9 years ago

So, this issue is 'expected', we discussed it with @vietj. We can replace the call by using the helper and mention it in the documentation. What do you think ?

purplefox commented 9 years ago

As long as the user can get an example working like the following, I don't mind:

  1. git clone https://github.com/vert-x3/vertx-examples.git
  2. IntelliJ: import maven project
  3. Right click main class of example... run

There should be no other steps imho. If a user gets stuck with a cryptic error trying to run the simplest helloworld example they may just walk away from Vert.x and never come back again.

cescoffier commented 9 years ago

I've changed the service proxy example in f41e5e6eebce98661e9f995a610b0efd170c2ed5.

I've tried the process you mention and it works for me.

purplefox commented 9 years ago

If I git clone, import, and rebuild project I still get: can't find ProcessorServiceVertxEBProxy

cescoffier commented 9 years ago

Oupsy, forgot this reference. Should be better in 4f8cd9536500ee916fdc804946f980203a2b0414

purplefox commented 9 years ago

Thanks, that solves the issue of the build failing for the service proxy example, but now I see the original issue again:

Error:osgi: [osgi-examples] Failed to load plugin org.apache.felix.ipojo.bnd.PojoizationPlugin;, error: org.apache.felix.ipojo.bnd.PojoizationPlugin not found, parent: java.net.URLClassLoader@45ee12a urls:[] exception:java.lang.ClassNotFoundException: org.apache.felix.ipojo.bnd.PojoizationPlugin

cescoffier commented 9 years ago

I'm going to install a new instance of intellij as I cannot reproduce that one.

purplefox commented 9 years ago

I am using 14.0.3 btw

purplefox commented 9 years ago

Just a guess - maybe you have manually installed some kind of OSGI plugin in your IDE, that I don't have, and is required for this example?

cescoffier commented 9 years ago

No, I'm a purist ;-)

OSGi does not require any IDE plugin. However, Intellij enables one by default that generally messes up things...

I'm downloading community and ultimate. It needs to work out of the box on both.

purplefox commented 9 years ago

Clement - I have license keys for ultimate that you're entitled too, just sent you a private email.

cescoffier commented 9 years ago

Ok, I've reproduced the issue, it's the intellij OSGi support (osmorc) that is unable to load BND plugins. I'm looking into it.

cescoffier commented 9 years ago

I've moved the osgi-examples to their own profile (not enabled by default). This fixed the Intellij issue. (879bf7246792b21904eb875993c935f0991c7cc0)

So, the issue is in Osmorc the OSGi plugin of intellij unable to read the configuration (as it is intended to do). The main issue is that it does not support the plugin's dependencies and fails to create the right classloader to execute BND. So the commit is just a work around this issue.

purplefox commented 9 years ago

Ok, I guess this should just be closed then.

cescoffier commented 9 years ago

Ok :-) Wanted to add the link to the osmorc bug once opened.

cescoffier commented 9 years ago

Here is the Osmorc bug ticket: https://youtrack.jetbrains.com/issue/IDEA-141732