Hi,

I also asked this question in the Vaadin forum. I just thought that maybe
another OSGi developer already had the same problems and am therefore
posting this question here too:

I just tried to run a simple Hello World Vaadin app in an OSGi environment
(I don't use Karaf) and ended up with a ClassNotFoundException:

Caused by: java.lang.ClassNotFoundException: de.unia.smds.maf.web.gui.MyUI
 at java.net.URLClassLoader.findClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at
org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:132)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at
com.vaadin.server.ServletPortletHelper.verifyUIClass(ServletPortletHelper.java:72)

My Setup is as follows:
- I'm using BndTools 3.5 in Eclipse Oxygen
- From Maven I get the following dependencies:

<dependency>
      <groupId>com.vaadin</groupId>
      <artifactId>vaadin-osgi-integration</artifactId>
      <version>8.2.1</version>
  </dependency>

  <dependency>
      <groupId>com.vaadin</groupId>
      <artifactId>vaadin-server</artifactId>
      <version>8.2.1</version>
  </dependency>

  <dependency>
      <groupId>com.vaadin</groupId>
      <artifactId>vaadin-themes</artifactId>
      <version>8.2.1</version>
  </dependency>

  <dependency>
      <groupId>com.vaadin</groupId>
      <artifactId>vaadin-client-compiled</artifactId>
      <version>8.2.1</version>
  </dependency>

- I created a new Bnd OSGi project and configured my Buildpath like this:
-buildpath: \
 org.eclipse.xtend.lib,\
 org.eclipse.xtend.lib.macro,\
 org.eclipse.xtext.xbase.lib,\
 com.google.guava;version=18.0,\
 osgi.enroute.base.api,\
 com.vaadin.server;version=8.2,\
 org.jsoup;version=1.8,\
 com.vaadin.external.gentyref;version=1.2,\
 com.vaadin.client-compiled;version=8.2,\
 com.vaadin.shared;version=8.2,\
 com.vaadin.themes;version=8.2

- Then I created the two classes MyUI and MyUIServlet

public class MyUI extends UI {
  @Override
  protected void init(final VaadinRequest request) {
    Label _label = new Label("Hello World");
    this.setContent(_label);
  }
}

@Component(service = VaadinServlet.class, property = {
(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN + "=/hello") })
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
@SuppressWarnings("all")
public class MyUIServlet extends VaadinServlet {
}

When I try to access the UI at http://localhost:8080/hello I receive the
above mentioned exception.

Did anyone had similar problems?
As I am using the official OSGi integration from Vaadin I thought that this
would work out of the box.

Am I missing something here?

Kind regards,
Thomas
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to