mycontroller-org / mycontroller-v1-legacy

The Open Source Controller
http://www.MyController.org
Apache License 2.0
148 stars 90 forks source link

Java 11 #482

Closed Avamander closed 1 year ago

Avamander commented 5 years ago

I tried running MyController with Java 11 and I think the startup script should include flags to disable forbidden reflection or not reflect like that:

[Wed Nov 07 17:26:49 EET 2018] Unexpected problem running servlet
org.jboss.resteasy.spi.UnhandledException: RESTEASY003770: Response is committed, can't handle exception
        at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:167)
        at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:471)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:415)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:202)
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
        at org.jboss.resteasy.plugins.server.tjws.TJWSServletDispatcher.service(TJWSServletDispatcher.java:40)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at Acme.Serve.Serve$ServeConnection.runServlet(Serve.java:2328)
        at Acme.Serve.Serve$ServeConnection.parseRequest(Serve.java:2282)
        at Acme.Serve.Serve$ServeConnection.run(Serve.java:2054)
        at Acme.Utils$ThreadPool$PooledThread.run(Utils.java:1402)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: java.lang.reflect.InaccessibleObjectException: Unable to make public com.sun.management.GcInfo com.sun.management.internal.GarbageCollectorExtImpl.getLastGcInfo() accessible: module jdk.management does not "exports com.sun.management.internal" to unnamed module @5b239d7d (through reference chain: org.mycontroller.standalone.api.jaxrs.utils.StatusJVM["garbageCollectors"])
        at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:210)
        at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:177)
        at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:199)
        at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:683)
        at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:130)
        at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1387)
        at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:889)
        at org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider.writeTo(ResteasyJackson2Provider.java:207)
        at org.mycontroller.standalone.api.jaxrs.mixins.McJacksonJson2Provider.writeTo(McJacksonJson2Provider.java:120)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:131)
        at org.jboss.resteasy.core.interception.ServerWriterInterceptorContext.writeTo(ServerWriterInterceptorContext.java:60)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:120)
        at org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor.aroundWriteTo(GZIPEncodingInterceptor.java:100)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:124)
        at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:98)
        at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:466)
        ... 12 more
Caused by: java.lang.RuntimeException: java.lang.reflect.InaccessibleObjectException: Unable to make public com.sun.management.GcInfo com.sun.management.internal.GarbageCollectorExtImpl.getLastGcInfo() accessible: module jdk.management does not "exports com.sun.management.internal" to unnamed module @5b239d7d
        at org.mycontroller.standalone.api.jaxrs.utils.StatusJVM.getGcInfo(StatusJVM.java:68)
        at org.mycontroller.standalone.api.jaxrs.utils.StatusJVM.getGarbageCollector(StatusJVM.java:48)
        at org.mycontroller.standalone.api.jaxrs.utils.StatusJVM.getGarbageCollectors(StatusJVM.java:41)
        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 com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:654)
        at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:675)
        ... 25 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make public com.sun.management.GcInfo com.sun.management.internal.GarbageCollectorExtImpl.getLastGcInfo() accessible: module jdk.management does not "exports com.sun.management.internal" to unnamed module @5b239d7d
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
        at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198)
        at java.base/java.lang.reflect.Method.setAccessible(Method.java:192)
        at org.mycontroller.standalone.api.jaxrs.utils.StatusJVM.getGcInfo(StatusJVM.java:64)
        ... 33 more

[Wed Nov 07 17:26:49 EET 2018] Unexpected problem running servlet: org.jboss.resteasy.spi.UnhandledException: RESTEASY003770: Response is committed, can't handle exception

and

2018-11-07 17:26:48,882 ERROR [Acme.Utils.ThreadPool(5)-PooledThread: Acme.Serve.Serve$ServeConnection@7d892951] [org.mycontroller.standalone.api.jaxrs.utils.StatusJVM:67] Error, 
java.lang.reflect.InaccessibleObjectException: Unable to make public com.sun.management.GcInfo com.sun.management.internal.GarbageCollectorExtImpl.getLastGcInfo() accessible: module jdk.management does not "exports com.sun.management.internal" to unnamed module @5b239d7d
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
        at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198)
        at java.base/java.lang.reflect.Method.setAccessible(Method.java:192)
        at org.mycontroller.standalone.api.jaxrs.utils.StatusJVM.getGcInfo(StatusJVM.java:64)
        at org.mycontroller.standalone.api.jaxrs.utils.StatusJVM.getGarbageCollector(StatusJVM.java:48)
        at org.mycontroller.standalone.api.jaxrs.utils.StatusJVM.getGarbageCollectors(StatusJVM.java:41)
        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 com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:654)
        at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:675)
        at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:130)
        at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1387)
        at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:889)
        at org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider.writeTo(ResteasyJackson2Provider.java:207)
        at org.mycontroller.standalone.api.jaxrs.mixins.McJacksonJson2Provider.writeTo(McJacksonJson2Provider.java:120)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:131)
        at org.jboss.resteasy.core.interception.ServerWriterInterceptorContext.writeTo(ServerWriterInterceptorContext.java:60)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:120)
        at org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor.aroundWriteTo(GZIPEncodingInterceptor.java:100)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:124)
        at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:98)
        at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:466)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:415)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:202)
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
        at org.jboss.resteasy.plugins.server.tjws.TJWSServletDispatcher.service(TJWSServletDispatcher.java:40)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at Acme.Serve.Serve$ServeConnection.runServlet(Serve.java:2328)
        at Acme.Serve.Serve$ServeConnection.parseRequest(Serve.java:2282)
        at Acme.Serve.Serve$ServeConnection.run(Serve.java:2054)
        at Acme.Utils$ThreadPool$PooledThread.run(Utils.java:1402)
        at java.base/java.lang.Thread.run(Thread.java:834)

and

2018-11-07 17:14:45,071 ERROR [mc-th-pool-0] [org.mycontroller.standalone.McUncaughtException:73] Exception,
java.lang.UnsatisfiedLinkError: /tmp/1541603685018-libjSerialComm.so: /tmp/1541603685018-libjSerialComm.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64-bit .so on a AARCH64-bit platform)
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
        at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2430)
        at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2487)
        at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2684)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2617)
        at java.base/java.lang.Runtime.load0(Runtime.java:767)
        at java.base/java.lang.System.load(System.java:1831)
        at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:181)
        at org.mycontroller.standalone.gateway.serial.SerialDriverJSerialComm.connect(SerialDriverJSerialComm.java:55)
        at org.mycontroller.standalone.gateway.serial.GatewaySerial.connect(GatewaySerial.java:91)
        at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:126)
        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:834)
2018-11-07 17:14:50,709 INFO [main] [org.mycontroller.standalone.StartApp:217] TJWS server started successfully, HTTPS Enabled?:false, HTTP(S) Port: [8080]
2018-11-07 17:14:50,714 INFO [main] [org.mycontroller.standalone.StartApp:115] MyController.org server started in [20947] ms
java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlElement
        at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:131)
        at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:118)
        at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:110)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at java.base/java.lang.Class.newInstance(Class.java:584)
        at com.fasterxml.jackson.jaxrs.json.JsonMapperConfigurator._resolveIntrospector(JsonMapperConfigurator.java:111)
        at com.fasterxml.jackson.jaxrs.json.JsonMapperConfigurator._resolveIntrospectors(JsonMapperConfigurator.java:84)
        at com.fasterxml.jackson.jaxrs.cfg.MapperConfiguratorBase._setAnnotations(MapperConfiguratorBase.java:120)
        at com.fasterxml.jackson.jaxrs.json.JsonMapperConfigurator.getDefaultMapper(JsonMapperConfigurator.java:45)
        at com.fasterxml.jackson.jaxrs.base.ProviderBase.locateMapper(ProviderBase.java:867)
        at org.mycontroller.standalone.api.jaxrs.mixins.McJacksonJson2Provider.writeTo(McJacksonJson2Provider.java:85)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:131)
        at org.jboss.resteasy.core.interception.ServerWriterInterceptorContext.writeTo(ServerWriterInterceptorContext.java:60)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:120)
        at org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor.aroundWriteTo(GZIPEncodingInterceptor.java:100)
        at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:124)
        at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:98)
        at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:466)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:415)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:202)
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
        at org.jboss.resteasy.plugins.server.tjws.TJWSServletDispatcher.service(TJWSServletDispatcher.java:40)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at Acme.Serve.Serve$ServeConnection.runServlet(Serve.java:2328)
        at Acme.Serve.Serve$ServeConnection.parseRequest(Serve.java:2282)
        at Acme.Serve.Serve$ServeConnection.run(Serve.java:2054)
        at Acme.Utils$ThreadPool$PooledThread.run(Utils.java:1402)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlElement
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 33 more
Avamander commented 5 years ago

One more during startup

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.postgresql.jdbc.TimestampUtils (file:/usr/lib/mycontroller/lib/mycontroller-dist-standalone-1.3.0.Final-single.jar) to field java.util.TimeZone.defaultTimeZone
WARNING: Please consider reporting this to the maintainers of org.postgresql.jdbc.TimestampUtils
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
jkandasa commented 5 years ago

@Avamander Thanks for the input. In which platform are you using? Is Java 11 default on your environment?

Avamander commented 5 years ago

I'm using it on my Raspberry Pi 3B, Java 11 is not yet the default but I'm pretty sure some security changes that break MyController are already in Java 9, which means next time a distribution bumps their java version default MyController will probably break.

benhubert commented 5 years ago

I see the same exceptions under Java 9

openjdk 9-Raspbian
OpenJDK Runtime Environment (build 9-Raspbian+0-9b181-4bpo9rpt1)
OpenJDK Server VM (build 9-Raspbian+0-9b181-4bpo9rpt1, mixed mode)
mitchmitchell commented 5 years ago

I logged a similar issue: https://github.com/mycontroller-org/mycontroller/issues/495

gnomex commented 5 years ago

I'm having the same issue

Unexpected problem running servlet org.jboss.resteasy.spi.UnhandledException: RESTEASY003770: Response is committed, can't handle exception
[...]
Caused by: com.fasterxml.jackson.databind.JsonMappingException: java.lang.reflect.InaccessibleObjectException: Unable to make public com.sun.management.GcInfo com.sun.management.internal.GarbageCollectorExtImpl.getLastGcInfo() accessible: module jdk.management does not "exports com.sun.management.internal" to unnamed module @1fc2b765 (through reference chain: org.mycontroller.standalone.api.jaxrs.utils.StatusJVM["garbageCollectors"])
[...]
Caused by: java.lang.RuntimeException: java.lang.reflect.InaccessibleObjectException: Unable to make public com.sun.management.GcInfo com.sun.management.internal.GarbageCollectorExtImpl.getLastGcInfo() accessible: module jdk.management does not "exports com.sun.management.internal" to unnamed module

running on ubuntu with openjdk 11.0.3

Emmpunkt commented 4 years ago

Any News on this?

jkandasa commented 4 years ago

@Emmpunkt Planing to start version 2.x in the near future. So no plan to upgrade to Java 11. However, pull requests are welcome.

If you need a docker image with version openjdk 1.8, let me know I can produce a docker image.

potier97 commented 4 years ago

Hola tengo el mismo error y me dice que mi version tiene que ser 1.7 o mayor. Y yo tengo la versión 11. Cómo se podria arreglar eso? Gracias