theotherp / nzbhydra2

Usenet meta search
Other
1.23k stars 75 forks source link

NZBHydra fails to start if java version is >= 9 #34

Closed nskillen closed 6 years ago

nskillen commented 6 years ago

Error when starting up, Win10 x64, Oracle Java 9.01.

Based on the stack trace, and this SO post, it looks like the problem is due to javax.xml.bind no longer being on the default classpath.

A simple fix, I think, would be to add an optional flag to the startup script, --java9, which could cause the --add-modules javax.xml.bind option to be passed to java on startup. A better solution would be to do a java version check before attempting to start hydra, and setting the options based on the results of that.

user@XENON C:\Tools\NZBHydra2
> & '.\NZBHydra2 Console.exe'
Logging wrapper output to C:\Tools\NZBHydra2\data\logs\wrapper.log
2018-01-07 12:43:01,585  INFO - Starting NZBHydra main process with command line: java -Xmx128M -DfromWrapper -XX:TieredStopAtLevel=1 -noverify -jar C:\Tools\NZBHydra2\lib\core-1.0.11-exec.jar --datafolder C:\Tools\NZBHydra2\data in folder C:\Tools\NZBHydra2
.__   __.  ________  .______   __    __  ____    ____  _______  .______          ___          ___
|  \ |  | |       /  |   _  \ |  |  |  | \   \  /   / |       \ |   _  \        /   \        |__ \
|   \|  | `---/  /   |  |_)  ||  |__|  |  \   \/   /  |  .--.  ||  |_)  |      /  ^  \          ) |
|  . `  |    /  /    |   _  < |   __   |   \_    _/   |  |  |  ||      /      /  /_\  \        / /
|  |\   |   /  /----.|  |_)  ||  |  |  |     |  |     |  '--'  ||  |\  \----./  _____  \      / /_
|__| \__|  /________||______/ |__|  |__|     |__|     |_______/ | _| `._____/__/     \__\    |____|

2018-01-07 12:43:02.940  INFO --- [           main] org.nzbhydra.NzbHydra                    : Starting NzbHydra on xenon with PID 20204 (C:\Tools\NZBHydra2\lib\core-1.0.11-exec.jar started by nskil in C:\Tools\NZBHydra2)
2018-01-07 12:43:02.954  INFO --- [           main] org.nzbhydra.NzbHydra                    : The following profiles are active: default
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils$1 (jar:file:/C:/Tools/NZBHydra2/lib/core-1.0.11-exec.jar!/BOOT-INF/lib/spring-core-4.3.11.RELEASE.jar!/) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils$1
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
2018-01-07 12:43:05.758  INFO --- [           main] org.nzbhydra.config.BaseConfig           : Using data folder C:\Tools\NZBHydra2\data
2018-01-07 12:43:06.584  INFO --- [ost-startStop-1] o.n.a.HydraAnonymousAuthenticationFilter : Granting basic user rights to anonymous users
2018-01-07 12:43:06.584  INFO --- [ost-startStop-1] o.n.a.HydraAnonymousAuthenticationFilter : Granting stats rights to anonymous users
2018-01-07 12:43:06.585  INFO --- [ost-startStop-1] o.n.a.HydraAnonymousAuthenticationFilter : Granting admin rights to anonymous users
2018-01-07 12:43:07.451  INFO --- [           main] o.f.core.internal.util.VersionPrinter    : Flyway 4.2.0 by Boxfuse
2018-01-07 12:43:07.609  INFO --- [           main] o.f.c.i.dbsupport.DbSupportFactory       : Database: jdbc:h2:file:C:\Tools\NZBHydra2\data/database/nzbhydra (H2 1.4)
2018-01-07 12:43:07.716  INFO --- [           main] o.f.core.internal.command.DbValidate     : Successfully validated 9 migrations (execution time 00:00.023s)
2018-01-07 12:43:07.730  INFO --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema "PUBLIC": 1.8
2018-01-07 12:43:07.732  INFO --- [           main] o.f.core.internal.command.DbMigrate      : Schema "PUBLIC" is up to date. No migration necessary.
2018-01-07 12:43:09.774  INFO --- [           main] org.nzbhydra.NzbHydra                    : Adding windows system tray icon
2018-01-07 12:43:10.006  INFO --- [           main] o.n.downloading.DownloaderProvider       : Loading downloaders
2018-01-07 12:43:10.007  INFO --- [           main] o.n.downloading.DownloaderProvider       : No downloaders configured
2018-01-07 12:43:10.169  WARN --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'newznab': Unsatisfied dependency expressed through field 'unmarshaller'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'marshaller' defined in class path resource [org/nzbhydra/web/WebConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect bean class [org.springframework.oxm.jaxb.Jaxb2Marshaller] for persistence metadata: could not find class that it depends on
2018-01-07 12:43:10.182  INFO --- [           main] org.nzbhydra.NzbHydra                    : Shutting down
2018-01-07 12:43:10.239 ERROR --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'newznab': Unsatisfied dependency expressed through field 'unmarshaller'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'marshaller' defined in class path resource [org/nzbhydra/web/WebConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect bean class [org.springframework.oxm.jaxb.Jaxb2Marshaller] for persistence metadata: could not find class that it depends on
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'marshaller' defined in class path resource [org/nzbhydra/web/WebConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect bean class [org.springframework.oxm.jaxb.Jaxb2Marshaller] for persistence metadata: could not find class that it depends on
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:526)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
Caused by: java.lang.IllegalStateException: Failed to introspect bean class [org.springframework.oxm.jaxb.Jaxb2Marshaller] for persistence metadata: could not find class that it depends on
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:401)
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:333)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:992)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:523)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
Caused by: java.lang.NoClassDefFoundError: Ljavax/xml/bind/Marshaller$Listener;
        at java.base/java.lang.Class.getDeclaredFields0(Native Method)
        at java.base/java.lang.Class.privateGetDeclaredFields(Unknown Source)
        at java.base/java.lang.Class.getDeclaredFields(Unknown Source)
        at org.springframework.util.ReflectionUtils.getDeclaredFields(ReflectionUtils.java:715)
        at org.springframework.util.ReflectionUtils.doWithLocalFields(ReflectionUtils.java:656)
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.buildPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:418)
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:397)
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:333)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:992)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:523)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Marshaller$Listener
        at java.base/java.net.URLClassLoader.findClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.Class.getDeclaredFields0(Native Method)
        at java.base/java.lang.Class.privateGetDeclaredFields(Unknown Source)
        at java.base/java.lang.Class.getDeclaredFields(Unknown Source)
        at org.springframework.util.ReflectionUtils.getDeclaredFields(ReflectionUtils.java:715)
        at org.springframework.util.ReflectionUtils.doWithLocalFields(ReflectionUtils.java:656)
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.buildPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:418)
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:397)
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:333)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:992)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:523)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)

2018-01-07 12:43:11,365  ERROR - Main process shut down unexpectedly. If the wrapper was started in daemon mode you might not see the error output. Start Hydra manually with the same parameters in the same environment to see it

Java version check:

user@XENON C:\Tools\NZBHydra2
> java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

user@XENON C:\Tools\NZBHydra2
> which java

CommandType Name     Path
----------- ----     ----
Application java.exe C:\ProgramData\Oracle\Java\javapath\java.exe
theotherp commented 6 years ago

I'm pretty sure Spring Boot has a couple of incompatibilities. When I starting developing Java 9 was far from being released so I completely forgot about it.

I'll see what I can do, but it's currently not my priority.

theotherp commented 6 years ago

I added a note, for now it stays this way.

Kline- commented 6 years ago

Would it be possible to reference this in the readme as a "wontfix", at least for now? The current verbiage on what JRE is required is written a bit ambiguously. I took it as "JRE9 is not necessary" rather than "JRE9 flat out won't work".

theotherp commented 6 years ago

Huh, I'm not a native speaker but didn't consider that ambiguous at all. But I made it clearer.

Kline- commented 6 years ago

It could just be me reading into things more than I need to. When I see "requires at least older version, not latest" I could take that to mean "minimum version supported , so not required to update to latest if you don't have it" or "only version supported , broken when using latest".

Thanks though!

On Fri, Feb 23, 2018 at 1:28 AM, theotherp notifications@github.com wrote:

Huh, I'm not a native speaker but didn't consider that ambiguous at all. But I made it clearer.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/theotherp/nzbhydra2/issues/34#issuecomment-367931555, or mute the thread https://github.com/notifications/unsubscribe-auth/ABEvzlyHxZit-v97Mlo1ic8WSIxZVP3Gks5tXmibgaJpZM4RVyPQ .