Tag: java 9

Mockito,Java 9和java.lang.ClassNotFoundException:sun.reflect.ReflectionFactory

我的项目是Wildfly 13应用程序,它使用Mockito测试库。 该应用程序不使用Java 9模块结构。 只要服务器在Java 8上运行,测试工作正常,但是一旦我们升级到Java 9,它们就会失败并出现以下exception: org.objenesis.ObjenesisException: java.lang.ClassNotFoundException: sun.reflect.ReflectionFactory from [Module “test.war” from Service Module Loader] at test.war//org.objenesis.instantiator.sun.SunReflectionFactoryHelper.getReflectionFactoryClass(SunReflectionFactoryHelper.java:63) at test.war//org.objenesis.instantiator.sun.SunReflectionFactoryHelper.newConstructorForSerialization(SunReflectionFactoryHelper.java:37) at test.war//org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.(SunReflectionFactoryInstantiator.java:41) at test.war//org.objenesis.strategy.StdInstantiatorStrategy.newInstantiatorOf(StdInstantiatorStrategy.java:68) at test.war//org.objenesis.ObjenesisBase.getInstantiatorOf(ObjenesisBase.java:94) at test.war//org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:73) at test.war//org.mockito.internal.creation.instance.ObjenesisInstantiator.newInstance(ObjenesisInstantiator.java:19) at test.war//org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.createMock(SubclassByteBuddyMockMaker.java:47) at test.war//org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.createMock(ByteBuddyMockMaker.java:25) at test.war//org.mockito.internal.util.MockUtil.createMock(MockUtil.java:35) at test.war//org.mockito.internal.MockitoCore.mock(MockitoCore.java:68) at test.war//org.mockito.Mockito.mock(Mockito.java:1895) at test.war//org.mockito.Mockito.mock(Mockito.java:1804) at test.war//application code… 我尝试了各种选项和组合: 使用Java 8,9,10进行编译 运行最新版本的OpenJDK 9和10 设置编译器和vm选项–add-modules jdk.unsupported和–add-exports jdk.unsupported / […]

如何在Jdk9 / java-9中解决module-info.java编译错误

我试图使用jdk-9在代码下运行,但在使用命令编译时遇到问题 命令 javac -d mods .\module-info.java com\nirav\modi\Test.java 错误 .\module-info.java:1: error: class, interface, or enum expected module module1 { } ^ 1 error module-info.java module module1 { } Test.java package com.nirav.modi; class Test { public static void main(String args[]){ System.out.println(“Hello Modular…”); } } 包结构如下 module1\module-info.java module1\com\nirav\modi\Test.java JDK版本 java version “9-ea” Java(TM) SE Runtime Environment (build 9-ea+153) […]

包javax.jnlp在模块java.jnlp中声明,它不在模块图中

我有一个使用Java webstart技术的项目。 我决定将Java版本从8升级到9.但是,我在编译时面临以下错误: error: package javax.jnlp is not visible import javax.jnlp.DownloadServiceListener; ^ (package javax.jnlp is declared in module java.jnlp, which is not in the module graph) 我试图将C:\Program Files\Java\jdk-9\lib\javaws.jar在类路径中,但仍然存在同样的问题。

为什么不允许导出整个模块?

在Java 9的模块声明中有2个构造: exports com.foo; 和 opens com.foo; 其中, exports授予编译时访问权限,而opens允许运行时访问,作为reflection和资源。 opens对exports有一个宽容,你可以将整个模块定义为打开,结果与显式打开每个包相同: open module com.mod { 但是没有类似的结构 exported module com.mod { 我的问题 :为什么会这样; 做出了哪些决定允许一次打开整个模块而不是出口?

单个Maven模块中的多个Java 9模块?

我有一个有趣的担忧。 我习惯了多模块Maven项目。 现在我正在调查如何做同样的事情,但也使用Jigsaw。 是的,每个Maven模块只能有一个Jigsaw模块吗? 在IDE中,我无法在同一个Maven模块中创建第二个。 那么,到目前为止,有没有任何约定或解决方法如何组合模块的两面?

密钥库不适用于Java 9

我已经使用portecle将JKS密钥库转换为P12格式,但它可能并不顺利。 密钥库使用Java 8(各种版本),但使用Java 9(OpenJDK 64位服务器VM(构建9内部+ 0-2016-04-14-195246.buildd.src,混合模式),我得到了 java.io.IOException: Invalid keystore format at sun.security.provider.JavaKeyStore.engineLoad(java.base@9-internal/JavaKeyStore.java:659) at sun.security.util.KeyStoreDelegator.engineLoad(java.base@9-internal/KeyStoreDelegator.java:219) at java.security.KeyStore.load(java.base@9-internal/KeyStore.java:1466) at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:52) at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:998) at org.eclipse.jetty.util.ssl.SslContextFactory.load(SslContextFactory.java:252) at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:219) 有趣的是Java 8 keytool显示 Keystore type: JKS Keystore provider: SUN Your keystore contains 5 entries … entries listed 而来自Java 9的那个显示 Keystore type: PKCS12 Keystore provider: SUN Your keystore contains 5 entries … […]

Java 9:java.lang.ClassNotFoundException:Spring Boot应用程序中的java.sql.SQLException

我用Java 9构建了一个Spring Boot应用程序… sourceCompatibility = 9 targetCompatibility = 9 …并使用以下命令启动它:java –module-path lib -m my.app。 … Caused by: java.lang.NoClassDefFoundError: java/sql/SQLException at spring.beans@5.0.2.RELEASE/org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:161) at spring.boot@2.0.0.M7/org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:436) … 5 more Caused by: java.lang.ClassNotFoundException: java.sql.SQLException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) … 7 more 注意:我使用classpath而不是–module-path成功启动了应用程序 编辑:谢谢你的建议! 最后,我找到了一个“魔术组合”来启动应用程序。 我修改了命令行,从lib中删除了javax.transaction-api-1.2.jar并将其放在类路径上以删除模块java.sql和javax.transaction.api之间的包(javax.transaction.xa)拆分冲突 java –module-path lib –add-modules java.sql,java.instrument,java.xml.bind -cp javax.transaction-api-1.2.jar -m my.app

JShell不会使用Git Bash执行任何操作

我为Windows安装了Java9( Oracle网站上当前可用的版本)(Windows 10 x64 Professional,也是最新的,作为vmware虚拟机运行 – > VMware Workstation 12)。 我将jdk\bin添加到User’s Path并尝试使用Git Bash来执行命令,但即使JShell启动,它也不会在按Enter后执行任何命令,它只是坐在那里而不做任何事情。 有趣的是它与Windows的默认命令行CMD或Powershell完美配合。 如果我没记错,Git Bash是基于Cygwin的。 这可能是什么原因? 此外,它没有直接连接到JShell ,但我在一台不同的机器上遇到了类似的问题,有一些命令行工具,比如JHipster (适用于CMD但不适用于GitBash)。 必要的截图: – 编辑:使用jshell -v没有什么区别。 此外,使用任何REPL帮助程序命令,如/help或/help intro会使shell停止。

Java 9,Hibernate和java.sql / javax.transaction

我试图使用Hibernate将项目“升级”到Java 9,但是我在使模块正常运行时遇到了问题。 我的module-info.java的相关部分如下所示: module test { … requires java.base; requires hibernate.core; requires java.naming; } 以及我POM中的相关依赖项 javax.xml.bind:jaxb-api ,2.3.0 org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec ,2.0.0.Alpha1 org.hibernate:hibernate-core ,5.2.12.Final javax.transaction:javax.transaction-api ,1.2 问题是,如果我运行程序,我得到javax/transaction/SystemException的NoClassDefFoundError 。 我调查了这个,很明显, 我的模块缺少javax.transaction的requires 。 所以我在javax.transaction-api上添加了一个模块依赖。 然后我继续尝试再次运行程序 – 现在我缺少java/sql/SQLException 。 以下是我遇到的问题:如果我在包含此类的模块java.sql上添加依赖项,我最终会遇到冲突: module从java.sql和javax.transaction.api读取包javax.transaction.api java.sql和javax.transaction.api包含不同的包,并且有一个共同的( javax.transaction.xa ), 但我需要所有这些包 。 我该如何处理? 我缺少一些简单的东西吗?

Java 9弃用SHA1证书,还是其他问题?

[ 更新 ] Oracle刚刚修改了加密路线图( https://www.java.com/en/jre-jdk-cryptoroadmap.html ),他们不会弃用SHA-1进行协同编码: 2017-03-14 Target date changed from 2017-04-18 to 2017-07-18. Narrowed scope from all SHA-1 usage: only TLS will be affected, *code signing will not not be affected at this time*. 2017-03-14 Target date changed from 2017-04-18 to 2017-07-18. Narrowed scope from all SHA-1 usage: only TLS will be affected, *code […]