当从 WSL1 迁移到 WSL2 时,很多事情都会发生变化;显然这也适用于 X11 转发。
为了在 Windows 10 上使用 WSL2 的 X11 转发,我需要采取哪些步骤,就像我在 WSL1 上所做的那样?
x11 x11-forwarding windows-10 windows-subsystem-for-linux wsl-2
我目前正在尝试从 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)