Tag: java 9

如何替换–add-modules java.xml.ws

我确实将基于Maven的项目迁移到了SpringBoot 2.0和Java 9.在这个过程中,我不得不添加一些依赖项来摆脱有关模块的Java 9警告(仍然可以使用–add-modules添加)。 但是我无法摆脱–add-modules java.xml.ws 正如JEP 320中所建议的那样,添加依赖项: javax.xml.bind jaxb-api 2.3.0 com.sun.xml.bind jaxb-impl 2.3.0 com.sun.xml.bind jaxb-core 2.3.0 这些依赖关系允许运行mvn test来运行。 IntelliJ IDE的构建也有效。 但是,在启动Spring Boot应用程序时,我得到以下运行时exception: … Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122) at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155) at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:174) … 64 more 我错过了哪些Maven依赖项? JarFinder告诉我实现类是jaxb-impl的一部分,但只有2.2.12版本。 那么这个实现在哪里消失了?

将私有Java9模块的包暴露给JUnit的正确方法是什么?

我有一个“可执行的”Java 9模块(意思是它不会公开任何包,它只包含一个main函数),我需要测试它。 我正在使用Gradle的java-library和org.gradle.java.experimental-jigsaw插件。 我有一些我需要测试的包私有方法,当我在IntelliJ中运行时测试工作,但是当使用Gradle运行时,我得到许多错误,如下所示: abc.MyClassTest > myTestMethod FAILED java.lang.IllegalAccessException 在Gradle报告中,我看到了错误的根源: class org.junit.runners.BlockJUnit4ClassRunner (in module junit) cannot access class abc.MyClassTest (in module com.my.mod) because module com.my.mod does not export abc to module junit 如果我将它添加到我的module-info.java文件中,它会发出警告: exports abc to junit; // I don’t really want to export this 警告(编译时): warning: [module] module not found: junit 在我看来,即使没有警告,这看起来也很可怕。 我的问题:如何“打开”此测试包以避免警告和错误?

有关serviceloader的Java 9依赖性问题

基于这种情况,我有一个关于serviceloader如何在Java 9中发生变化的问题 脚本 项目gert Class Main package gert; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; public class Main { static public void test() throws JAXBException { InputStream is = new ByteArrayInputStream(“”.getBytes(StandardCharsets.UTF_8)); JAXBContext jaxbContext = JAXBContext.newInstance(ClassesDef.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); unmarshaller.unmarshal(is); } } Project gert Class ClassesDef package gert; import javax.xml.bind.annotation.XmlAttribute; […]

Eclipse Java插件项目中的传递依赖项

看来,我的Eclipse Oxygen 3传递依赖关系在Plugin-Projects中没有得到解决。 考虑以下项目,其中A仅依赖于B,B取决于C: 虽然在JDK 1.8中运行A结果很好(正如预期的那样),但在JDK 9中我得到了众所周知的知识 Exception in thread “main” java.lang.NoClassDefFoundError: c/C at bB(B.java:9) at aAmain(A.java:8) Caused by: java.lang.ClassNotFoundException: cC at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) … 2 more 我知道,我没有声明任何模块,但我想,省略它们只是保持项目不变,即使在JDK 9中。当我直接在A MANIFEST.MF中导入项目C时,所有模块都在JDK 1.8中工作。 那么如何在没有声明模块的情况下让项目运行?

Java9中的 ant任务是否已更改?

自从切换到Java 9后,我无法再使用该任务打包我的应用程序。 至少有两个问题: 似乎不再支持basedir属性 我的.iss文件,用于创建Windows可执行文件,可以找到更长的时间 我找不到任何文件表明有变化。 我的ant任务是: 任何帮助非常感谢。 具有basedir属性的输出是: C:\ SfnDevelopment \ trunk \ sfnLauncher \ build.xml:248:fx:platform不支持​​org.apache中org.apache.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:396)中的“basedir”属性.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:344)org.apache.tools.ant.UnknownElement.handleChild(UnknownElement.java:580)atg.apache.tools.ant.UnknownElement.handleChildren(UnknownElement.java) :349)org.apache.tools.ant.UnknownElement.configure(UnknownElement.java:201)位于org.apache.tools.ant的org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:163)。 Task.perform(Task.java:347)org.apache.tools.ant.Target.execute(Target.java:390)atg.apache.tools.ant.Target.performTasks(Target.java:411)atg .apache.tools.ant.Project.executeSortedTargets(Project.java:1397)org.apache.tools.ant.Project.executeTarget(Project.java:1366)org.apache.tools.ant.helper.DefaultExecutor.executeTargets (DefaultExecutor.java:41)在org.apache.tool s.ant.Project.executeTargets(Project.java:1249)org.apache.tools.ant.Main.runBuild(Main.java:801)org.apache.tools.ant.Main.startAnt(Main.java: 218)org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)引起:类型没有不支持“basedir”属性。 at org.apache.tools.ant.IntrospectionHelper.setAttribute(IntrospectionHelper.java:402)at org.apache.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:388)… 16更多 带有-verbose的ant的输出,没有basedir属性,是: 解析buildfile jar:file:/ C:/Program%20Files/Java/jdk-9/lib/ant-javafx.jar!/com/sun/javafx/tools/ant/antlib.xml,URL = jar:file:/ C:/Program%20Files/Java/jdk-9/lib/ant-javafx.jar!/com/sun/javafx/tools/ant/antlib.xml来自zip文件[macrodef]创建宏javafx:com.sun。 javafx.tools.ant:init-ant运行[C:\ Program Files \ Java \ jdk-9 \ bin \ java.exe,-version]运行[C:\ Program Files(x86)\ Inno Setup 5 \ iscc.exe ,/?]检测到[C:\ Program […]

Gradle不尊重JDK9中的–add-modules jvm参数

我正在尝试JDK9(9-ea + 143),并且需要设置–add-modules java.xml.bind 。 我试过了: 设置GRADLE_OPTS=”–add-modules java.xml.bind ‘-Dorg.gradle.jvmargs=–add-modules java.xml.bind'” 设置org.gradle.jvmargs=–add-modules java.xml.bind在gradle.properties中org.gradle.jvmargs=–add-modules java.xml.bind 。 将test { jvmArgs ‘–add-modules java.xml.bind’ }到build.gradle 将tasks.withType(Test) { jvmArgs ‘–add-modules java.xml.bind’ }到build.gradle 将tasks.withType(JavaExec) { jvmArgs ‘–add-modules java.xml.bind’ }到build.gradle 测试仍然失败。 我错过了什么? 我在https://github.com/henrik242/gradle-jdk9-test-problem中有一个示例项目 ✨ ./gradlew build :compileJava /foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:1: error: package javax.xml.bind does not exist import javax.xml.bind.ValidationException; ^ /foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:5: error: cannot find symbol public […]

JavaFX:更新到Java 9后出现奇怪的ClassNotFoundException

我在Java 8中启动了一个Maven项目,并希望将其迁移到Java 9.同时我也从Eclipse Neon EE转到Eclipse Oxygen EE。 (重新安装JFX SDK)。 虽然Eclipse Workspace没有显示任何错误; 一旦我尝试编译并运行以前在Java 8中运行完全正常的完全相同的程序,我会得到以下exception: {…} Caused by: java.lang.ClassNotFoundException: com.sun.javafx.css.converters.PaintConverter at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) … 26 more 运行应用程序应用程序的exception。主要 我现在已经多次重建项目,无法让它工作……

使用新的Java模块系统加载服务提供程序我还缺少什么?

我正在将module-info.java添加到Ikonli软件包中,我的服务类遇到了麻烦。 ikonli-core定义了一个名为IkonHandler的接口。 ikonli-fontawesome5-pack有一个名为FontAwesomeSolidIkonHandler的IkonHandler 服务提供商 。 这些服务产品由ikonli-javafx的IkonResolver 。 鉴于此,我创建了这些模块定义: module org.kordamp.ikonli.core { exports org.kordamp.ikonli; } module org.kordamp.ikonli.javafx { exports org.kordamp.ikonli.javafx; uses org.kordamp.ikonli.IkonHandler; requires javafx.graphics; requires org.kordamp.ikonli.core; } module org.kordamp.ikonli.fontawesome5 { exports org.kordamp.ikonli.fontawesome5; provides org.kordamp.ikonli.IkonHandler with org.kordamp.ikonli.fontawesome5.FontAwesomeBrandsIkonHandler, org.kordamp.ikonli.fontawesome5.FontAwesomeRegularIkonHandler, org.kordamp.ikonli.fontawesome5.FontAwesomeSolidIkonHandler; requires org.kordamp.ikonli.core; requires org.kordamp.jipsy; } 它们可能不完整,但它们足够完整,以便在我的应用程序启动时,它会因此错误而失败: java.lang.UnsupportedOperationException: Cannot resolve ‘fas-user’ 没有处理程序设法加载图标时抛出: public IkonHandler resolveIkonHandler(String value) { requireNonNull(value, “Ikon […]

Java 9 – 在运行时动态添加jar

我有Java 9的类加载器问题。 此代码适用于以前的Java版本: private static void addNewURL(URL u) throws IOException { final Class[] newParameters = new Class[]{URL.class}; URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class newClass = URLClassLoader.class; try { Method method = newClass.getDeclaredMethod(“addNewURL”, newParameters ); method.setAccessible(true); method.invoke(urlClassLoader, new Object[]{u}); } catch (Throwable t) { throw new IOException(“Error, could not add URL to system classloader”); } } […]

设置JVM选项以避免错误org.springframework.cglib.core.ReflectUtils $ 1 非法reflection访问

我使用Spring Boot 2.0.0.RC1,JDK 9.0.4,IntelliJ IDEA 2017.3.4 Ultimate,Gradle 4.5.1。 Spring Boot RC1版本(严格来说,Spring Framework 5.0.3.RELEASE)有一个已知的问题: https ://jira.spring.io/browse/SPR-15859,我也在这里看到它https://github.com/ dsyer /弹簧引导java的9#创建-A-弹簧引导应用 Spring开发人员建议 您可以通过在命令行中添加-illegal-access = deny来关闭它(Java 9中的默认值是允许的)。 我选择菜单帮助\编辑自定义VM选项… ,然后在文件的最后一行添加新选项。 然后我发现了错误 > Unrecognized option: -illegal-access=deny > > Error: Could not create the Java Virtual Machine. > > Error: A fatal exception has occurred. Program will exit. Full console log /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/java -XX:TieredStopAtLevel=1 […]