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

Unable to See Home Page with HTML Template #1

Open
JulianFeinauer opened this issue Jan 10, 2020 · 8 comments
Open

Unable to See Home Page with HTML Template #1

JulianFeinauer opened this issue Jan 10, 2020 · 8 comments
Labels
bug Something isn't working help wanted Extra attention is needed

Comments

@JulianFeinauer
Copy link
Owner

JulianFeinauer commented Jan 10, 2020

Reproduce Issue

  • Install feature-repo
  • Install feature vaadin-servlet
  • Install bundle bundle:install -s mvn:org.pragmaticminds.plc4x/main-view/1.0.0-SNAPSHOT
  • Go to localhost:8181
  • Why the heck is this Exception there... ?

You can see that it works in other cases by installing the feature vaadin-demo which wires a page on localhost:8181 that works.

Edit: Added Exception

There was an exception while trying to navigate to '' with the exception message 'Unable to create an instance of 'org.pragmaticindustries.cockpit.DesktopTemplate'. The constructor threw an exception.'

java.lang.IllegalArgumentException: Unable to create an instance of 'org.pragmaticindustries.cockpit.DesktopTemplate'. The constructor threw an exception.
	at com.vaadin.flow.internal.ReflectTools.createProxyInstance(ReflectTools.java:510)
	at com.vaadin.flow.internal.ReflectTools.createInstance(ReflectTools.java:447)
	at com.vaadin.flow.di.DefaultInstantiator.getOrCreate(DefaultInstantiator.java:65)
	at com.vaadin.flow.di.Instantiator.createRouteTarget(Instantiator.java:158)
	at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.lambda$getRouteTarget$1(AbstractNavigationStateRenderer.java:121)
	at java.util.Optional.orElseGet(Optional.java:267)
	at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.getRouteTarget(AbstractNavigationStateRenderer.java:120)
	at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.handle(AbstractNavigationStateRenderer.java:178)
	at com.vaadin.flow.router.Router.handleNavigation(Router.java:219)
	at com.vaadin.flow.router.Router.navigate(Router.java:190)
	at com.vaadin.flow.router.Router.initializeUI(Router.java:92)
	at com.vaadin.flow.server.BootstrapHandler.createAndInitUI(BootstrapHandler.java:1117)
	at com.vaadin.flow.server.BootstrapHandler.synchronizedHandleRequest(BootstrapHandler.java:396)
	at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
	at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1507)
	at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:242)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:873)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
	at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:214)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1700)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1667)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.Server.handle(Server.java:505)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.vaadin.flow.internal.ReflectTools.createProxyInstance(ReflectTools.java:479)
	... 52 more
Caused by: java.lang.NoClassDefFoundError: Lcom/vaadin/flow/internal/StateNode;
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
	at java.lang.Class.getDeclaredField(Class.java:2068)
	at net.bytebuddy.implementation.LoadedTypeInitializer$ForStaticField.onLoad(LoadedTypeInitializer.java:120)
	at net.bytebuddy.implementation.LoadedTypeInitializer$Compound.onLoad(LoadedTypeInitializer.java:187)
	at net.bytebuddy.dynamic.TypeResolutionStrategy$Passive.initialize(TypeResolutionStrategy.java:102)
	at net.bytebuddy.dynamic.DynamicType$Default$Unloaded.load(DynamicType.java:5623)
	at com.vaadin.flow.templatemodel.TemplateModelProxyHandler.createProxyConstructor(TemplateModelProxyHandler.java:247)
	at com.vaadin.flow.templatemodel.TemplateModelProxyHandler.createInterfaceConstructor(TemplateModelProxyHandler.java:213)
	at com.vaadin.flow.templatemodel.TemplateModelProxyHandler.createProxyConstructor(TemplateModelProxyHandler.java:202)
	at com.vaadin.flow.internal.ReflectionCache.lambda$wrapValueProvider$d0062d93$1(ReflectionCache.java:84)
	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
	at com.vaadin.flow.internal.ReflectionCache.get(ReflectionCache.java:101)
	at com.vaadin.flow.templatemodel.TemplateModelProxyHandler.createModelProxy(TemplateModelProxyHandler.java:193)
	at com.vaadin.flow.component.polymertemplate.PolymerTemplate.createTemplateModelInstance(PolymerTemplate.java:205)
	at com.vaadin.flow.component.polymertemplate.PolymerTemplate.getModel(PolymerTemplate.java:197)
	at com.vaadin.flow.component.polymertemplate.PolymerTemplate.initModel(PolymerTemplate.java:228)
	at com.vaadin.flow.component.polymertemplate.PolymerTemplate.<init>(PolymerTemplate.java:114)
	at com.vaadin.flow.component.polymertemplate.PolymerTemplate.<init>(PolymerTemplate.java:122)
	at org.pragmaticindustries.cockpit.DesktopTemplate.<init>(DesktopTemplate.java:55)
	... 57 more
Caused by: java.lang.ClassNotFoundException: com.vaadin.flow.internal.StateNode
	at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:347)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 77 more
@JulianFeinauer JulianFeinauer added bug Something isn't working help wanted Extra attention is needed labels Jan 10, 2020
@ANierbeck
Copy link
Contributor

what's the exception?

@JulianFeinauer
Copy link
Owner Author

Sorry, @ANierbeck addded the Exception. As the Class thats missing is in a package named "internal" i was thinking that this probably could be related??

@ANierbeck
Copy link
Contributor

java.lang.ClassNotFoundException: com.vaadin.flow.internal.StateNode
in the context of OSGi means, you need to import it :)

@JulianFeinauer
Copy link
Owner Author

java.lang.ClassNotFoundException: com.vaadin.flow.internal.StateNode
in the context of OSGi means, you need to import it :)

Yes, I agree but... it is imported as maven dependency (scope provided).
Or what else could I do?

@ANierbeck
Copy link
Contributor

ANierbeck commented Jan 10, 2020

take a look at your generated manifest, if it's not listed in the import-package part you'll need to add it, as it most likely is a dependency not visible to the bnd plugin

And maven dependency doesn't necessarely means it's imported ;)

@JulianFeinauer
Copy link
Owner Author

@ANierbeck I checked now everything and it seems that the Issue seems to be unrelated to OSGi classloading. Vaadin uses ByteBuddy somewhere and creates a Proxy somewhere and calls this line from ByteBuddy:

    /**
     * {@inheritDoc}
     */
    public DynamicType.Unloaded<T> make(TypeResolutionStrategy typeResolutionStrategy) {
        return make(typeResolutionStrategy, TypePool.ClassLoading.ofSystemLoader()); // Mimics the default behavior of ASM for least surprise.
    }

which lets it use the System Classloader for the creation which, in an OSGi Env is... something weird : /

@JulianFeinauer
Copy link
Owner Author

I also started a discussion in the Vaadin Forum https://vaadin.com/forum/thread/18035562

@JulianFeinauer
Copy link
Owner Author

This is likely a Vaadin Bug, so I opened an Issue there vaadin/flow#7377 (with some more details).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants