javassist.NotFoundException 自 Java 9 起

JavaFX 不允许 WebViews 是透明的,所以我发现这个补丁使用 javassist 来修改 Java 的com.sun.webkit.WebPage.


这在 Java 8 之前运行良好,但在 Java 9 中停止工作:


> Patching com/sun/webkit/WebPage ...

javassist.CannotCompileException: [source error] no such class: com.sun.webkit.graphics.WCRectangle

    at javassist.CtBehavior.setBody(CtBehavior.java:446)

    at javassist.CtBehavior.setBody(CtBehavior.java:412)

    at com.github.micheljung.transparentwebview.TransparentWebViewPatch.transform(TransparentWebViewPatch.java:64)

    at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)

    at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)

    at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:550)

    at java.base/java.lang.ClassLoader.defineClass2(Native Method)

    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1099)

    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:206)

    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:760)

    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:681)

    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:606)

    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)

    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)

    at javafx.web/javafx.scene.web.WebEngine.<clinit>(WebEngine.java:338)

    at javafx.web/javafx.scene.web.WebView.<init>(WebView.java:260)

    at com.github.micheljung.transparentwebview.Demo.start(Demo.java:21)

由于我不明白 javassist 如何查找类,我在这里迷路了。我认为它与 Java 9 模块有关。有人知道吗?该类仍然存在,具有相同的包名。



守候你守候我
浏览 444回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java