小编whm*_*hme的帖子

如何在 WSL2 上设置工作 X11 转发

当从 WSL1 迁移到 WSL2 时,很多事情都会发生变化;显然这也适用于 X11 转发。
为了在 Windows 10 上使用 WSL2 的 X11 转发,我需要采取哪些步骤,就像我在 WSL1 上所做的那样?

x11 x11-forwarding windows-10 windows-subsystem-for-linux wsl-2

124
推荐指数
8
解决办法
12万
查看次数

java.lang.IllegalAccessError: 无法访问类,因为模块没有导出到未命名的模块

我目前正在尝试从 jdk-9.0.1 中成功提取 java.base.java.util.jar 包,从中构建一个 .jar 并将该 jar 作为外部库导入到另一个项目中,以便我可以修改其中包含的类的某些方法的行为。

我似乎成功地提取了包,因为我能够消除项目中所有可能的预编译错误并构建 .jar 工件。我也可以在我的其他项目中将此 .jar 作为外部库导入。

编辑:需要的 java.util.jar 外部的每个私有类(即:SharedSecrets)也被提取并放入 .jar

但是,当我尝试运行它(通过替换import java.util.jar.*;以使用我自己的版本)时,我收到此错误:java.lang.IllegalAccessError: class SharedSecrets (in unnamed module @0x2b546384) cannot access class jdk.internal.misc.Unsafe (in module java.base) because module java.base does not export jdk.internal.misc to unnamed module @0x2b546384

我尝试添加 this:--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED并将this:添加--add-exports=java.base/jdk.internal.misc.Unsafe=ALL-UNNAMED到两者的编译选项中,由提取的 java.util.jar 包组成的项目和我想将其作为外部库导入的项目,都没有工作 -> 错误仍然存​​在。

--add-exports编译选项中的所有其他内容在这两个项目上都可以正常工作。

我究竟做错了什么?我必须改变什么才能让它工作?

注意:如果事情不清楚,请随时提问!

编辑:我尝试使用我自己的“java.util.jar”而不是官方的代码(注意目前两者是相同的,唯一的区别是一个保留在 jdk 中,而另一个只是“最小”可行的产品')

这是不是重复这个,因为我(和我已经指出了这一点),尝试了--add-exports这些建议作为其他问题的答案。

错误发生在调用 JarFile 构造函数的 4. 行中,该行不会调用 jdk 中的那个,而是我导入的自制库中的那个。

public boolean …
Run Code Online (Sandbox Code Playgroud)

java illegalaccessexception java-9

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