相关疑难解决方法(0)

Lombok项目是否支持Java 9?

我在我的项目中使用了龙目岛,但我的同事不同意使用它,他的理由是(来自lombok文件的争议)

这两个项目Lombok都利用非公共API来完成他们的巫术.这意味着使用后续IDE或JDK版本可能会破坏Project Lombok的风险.

但这是一篇2010年写的非常古老的文档,也许现在已经解决了这个问题,所以我想知道Lombok是否支持Java 9并且它仍然使用非公共API:s?

lombok java-9

35
推荐指数
1
解决办法
1万
查看次数

无法使字段 private Final java.util.Comparator java.util.TreeMap.comparator 可访问:java.base 不会向未命名模块“打开 java.util”

我创建了一个 Cucumber 功能文件和步骤文件,然后单击功能文件的“运行配置”,我在控制台中看到以下内容。我怎么解决这个问题?

\n
*Feature: Login into account\n  Existing user should be able to login to account using correct credentials\n  \nScenario: Login into account with correct credentials     # C:/Users/MI/Desktop/CucumberFramework/CucumberFramework/src/test/java/CucumberFramework/featureFiles/Login.feature:4\n    \nGiven User navigates to stackoverflow website           # LoginSteps.user_navigates_to_stackoverflow_website()\n      java.lang.ExceptionInInitializerError\n        at cucumber.deps.com.thoughtworks.xstream.XStream.setupConverters(XStream.java:820)\n        at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:574)\n        at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:530)\n        at cucumber.runtime.xstream.LocalizedXStreams$LocalizedXStream.<init>(LocalizedXStreams.java:50)\n        at cucumber.runtime.xstream.LocalizedXStreams.newXStream(LocalizedXStreams.java:37)\n        at cucumber.runtime.xstream.LocalizedXStreams.get(LocalizedXStreams.java:29)\n        at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)\n        at cucumber.runtime.Runtime.runStep(Runtime.java:300)\n        at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)\n        at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)\n        at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)\n        at cucumber.runtime.model.CucumberFeature.run(CucumberFeature.java:165)\n        at cucumber.runtime.Runtime.run(Runtime.java:122)\n        at cucumber.api.cli.Main.run(Main.java:36)\n        at cucumber.api.cli.Main.main(Main.java:18)\n        at \xe2\x9c\xbd.Given User navigates to stackoverflow website(C:/Users/MI/Desktop/CucumberFramework/CucumberFramework/src/test/java/CucumberFramework/featureFiles/Login.feature:5)\n     \n Caused by: java.lang.reflect.InaccessibleObjectException: Unable …
Run Code Online (Sandbox Code Playgroud)

java bdd cucumber selenium-webdriver

30
推荐指数
3
解决办法
8万
查看次数

如何在 JavaExec 任务中正确添加 --add-opens 到 jvmArgs

目前我有一个执行运行程序的任务,比如

task runApp(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath

    main = 'com.eonmux.somepackage'

    jvmArgs '-Xmx4096m'
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将 --add-opens 添加到 JVM 参数列表中,以便允许从我的 gradle 包进行反射访问

就像是

task runApp(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath

    main = 'com.eonmux.somepackage'

    jvmArgs '-Xmx4096m','--add-opens java.base/jdk.internal.loader=ALL-UNNAMED'
}
Run Code Online (Sandbox Code Playgroud)

但是,这会出现以下错误,指出命令行选项无法识别

2020-12-09T16:30:56.285-0500 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'command 'C:\Program Files\AdoptOpenJDK\jdk-11.0.6.10-openj9\bin\java.exe''
2020-12-09T16:30:56.286-0500 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
2020-12-09T16:30:56.360-0500 [ERROR] [system.err] JVMJ9VM007E Command-line option unrecognised: --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
2020-12-09T16:30:56.361-0500 [ERROR] [system.err] Error: Could not create the Java Virtual Machine.
Could not create the Java Virtual …
Run Code Online (Sandbox Code Playgroud)

java reflection arguments gradle

24
推荐指数
1
解决办法
2万
查看次数

java.lang.reflect.InaccessibleObjectException:无法使字段私有最终 java.util.Comparator java.util.TreeMap.comparator 可访问:模块

这是我的第一个黄瓜项目,我在设置所有内容时遵循了教程。一切似乎都是一样的,但出于某种原因我得到了这个:

\n

java.lang.ExceptionInInitializerError。\n原因:java.lang.reflect.InaccessibleObjectException:无法使字段私有最终java.util.Comparator java.util.TreeMap.comparator可访问:模块java.base不“打开java.util”到未命名模块@74ad1f1f

\n

知道如何解决这个错误吗?

\n

下面我发布了控制台中出现的所有内容以及我的 pom 文件,以防我的依赖项出现问题,尽管教程的 pom 文件中的人员是相同的。

\n

这就是我的控制台中显示的所有内容。

\n
[31mFailed scenarios:[0m\n[31muni/login/Login.feature:3 [0m# Scenario: Enter the system.\n1 Scenarios ([31m1 failed[0m)\n5 Steps ([31m1 failed[0m, [36m4 skipped[0m)\n0m0.185s\n\njava.lang.ExceptionInInitializerError\n    at cucumber.deps.com.thoughtworks.xstream.XStream.setupConverters(XStream.java:820)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:574)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:530)\n    at cucumber.runtime.xstream.LocalizedXStreams$LocalizedXStream.<init>(LocalizedXStreams.java:50)\n    at cucumber.runtime.xstream.LocalizedXStreams.newXStream(LocalizedXStreams.java:37)\n    at cucumber.runtime.xstream.LocalizedXStreams.get(LocalizedXStreams.java:29)\n    at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)\n    at cucumber.runtime.Runtime.runStep(Runtime.java:300)\n    at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)\n    at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)\n    at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)\n    at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:102)\n    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)\n    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)\n    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n    at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)\n    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:95)\n    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:38)\n    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n …
Run Code Online (Sandbox Code Playgroud)

java eclipse cucumber cucumber-junit cucumber-java

17
推荐指数
3
解决办法
11万
查看次数

创建模拟对象时 Mockito 无法访问对象异常

java.lang.reflect.InaccessibleObjectException尝试 Mock 一个对象一段时间

Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @238e0d81
Run Code Online (Sandbox Code Playgroud)

java mockito

14
推荐指数
1
解决办法
8919
查看次数

如何修复“无法使受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass?

我已经使用 java 16 启动了一个项目,但项目中到处都出现错误:

An error has occurred. See error log for more details.
Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @6dfcffb5
Run Code Online (Sandbox Code Playgroud)

看来我从不同版本的 java 获得的代码在这个特定版本中不起作用。知道我需要在 pojo 类中更改什么吗?我的应用程序中只有 1 个 pojo,因为它是微服务。

谢谢。

java

14
推荐指数
2
解决办法
4万
查看次数

Hibernate对Java 9的支持

Hibernate是否已准备好使用Java 9的可用版本?

我记得我已经尝试过但失败了.不幸的是我不记得具体原因.

顺便说一下,Hibernate Validator 5.2.3已经可以与Java 9一起使用了.

java hibernate java-9

12
推荐指数
1
解决办法
4758
查看次数

JUINT 测试给出错误 java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.lang.Object.finalize()

运行测试时出现错误,我无法理解为什么会出现此错误,此代码在 java 8 中运行良好,而在 java 17 中运行时出现错误。谷歌搜索了这个错误,但没有发现任何有用的东西。请帮助我理解这个错误。提前致谢:)

@RunWith(PowerMockRunner.class)
@PrepareForTest({PopulatedAuthorizedUser.class})
@SpringBootTest(classes = MockServletContext.class)
@PowerMockIgnore({"javax.management.*", "javax.net.ssl.*", 
"jdk.internal.reflect.*"})
public class ProjectUserControllerTest {

private ProjectUserController controller;

private UUID projectId = UUID.randomUUID();
private UUID groupId = UUID.randomUUID();
private String email = "project.user@email.com";

@Mock
private ProjectUserService projectUserService;

private ObjectMapper objectMapper = new ObjectMapper();

@Mock
protected AuthorizedUser au;

@Before
public void setUp() throws Exception {
    controller = new ProjectUserController();
    FieldUtils.writeField(controller, "projectUserService", projectUserService, true);
    FieldUtils.writeField(controller, "objectMapper", objectMapper, true);
    PowerMockito.mockStatic(PopulatedAuthorizedUser.class);
    Mockito.when(PopulatedAuthorizedUser.get()).thenReturn(mockAuthorizedUser());
}

@Test
public void testGetProjectUsers() {
    Mockito.doReturn(Arrays.asList(mockProjectUser())).when(projectUserService)
            .findProjectUsersByProjectId(projectId); …
Run Code Online (Sandbox Code Playgroud)

java junit powermockito

12
推荐指数
2
解决办法
5万
查看次数

针对JDK 9模块的TestNG测试执行导致InaccessibleObjectException

我正在尝试将以下库转换为Java 9模块:https://github.com/sskorol/test-data-supplier

遵循本指南:https://guides.gradle.org/building-java-9-modules

经过一些操作和重构(无法管理lombok问题,所以只是临时删除它),我有以下module-info.java:

module io.github.sskorol {
    exports io.github.sskorol.core;
    exports io.github.sskorol.model;

    requires testng;
    requires vavr;
    requires streamex;
    requires joor;
    requires aspectjrt;
}
Run Code Online (Sandbox Code Playgroud)

它甚至可以在测试跳过的情况下进行编译/构建.但是,当我尝试运行测试任务时,我收到以下异常:

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 2.
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)
    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:564)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy1.stop(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:120)
    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:564)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) …
Run Code Online (Sandbox Code Playgroud)

java testng gradle java-9

10
推荐指数
1
解决办法
730
查看次数

带有gradle的java.lang.ExceptionInInitializerError

我已经将java从8更新到9-ea并从2.13更新为3.4.1.以下是gradle --version输出.

------------------------------------------------------------
Gradle 3.4.1
------------------------------------------------------------

Build time:   2017-03-03 19:45:41 UTC
Revision:     9eb76efdd3d034dc506c719dac2955efb5ff9a93

Groovy:       2.4.7
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          9-ea (Oracle Corporation 9-ea+158)
OS:           Linux 4.8.0-36-generic amd64
Run Code Online (Sandbox Code Playgroud)

遇到以下错误时编译:

FAILURE: Build failed with an exception.

* What went wrong:
java.lang.ExceptionInInitializerError (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Run Code Online (Sandbox Code Playgroud)

输出gradle --stacktrace如下:

java.lang.ExceptionInInitializerError
        at org.gradle.initialization.DefaultClassLoaderRegistry.restrictTo(DefaultClassLoaderRegistry.java:40) …
Run Code Online (Sandbox Code Playgroud)

java gradle java-9

8
推荐指数
2
解决办法
4566
查看次数