繁体   English   中英

Java:tools.jar无法访问javaagent

[英]Java: tools.jar not accessible for javaagent

我正在开发一个Java代理,它通过像com.sun.tools.javac.util.Options这样的反射来使用tools.jar一些类。

为了测试我的代理,我设置了set JAVA_TOOL_OPTIONS=-javaagent:path-to-my-agent-jar并在一个简单的gradle项目上启动构建,java代理将被挂钩。

我已将tools.jar添加到gradle项目的类路径中并检查它是否已正确添加到类路径中。

我的代理正确地挂钩到构建过程。

我的问题似乎是代理无法访问用于构建的类加载器,因此无法从tools.jar中找到类并引发

java.lang.Error: java.lang.ClassNotFoundException: com/sun/tools/javac/util/Options

无论如何我可以将tools.jar添加到我的java代理中吗?

提前致谢,

将jdk导入项目属性中的构建路径。在eclipse中,属性 - > Java构建路径 - >库(即).... \\ Java \\ jdk1.7.0_79 \\ lib tools.jar将出现在此处

我找到了解决方案。

我们有两个java应用程序:gradle将构建一个gradle项目,javaagent将连接到第一个java应用程序。 它们都生活在同一个JVM中,但每个都使用它的类加载器。

因此,可以在gradle项目中访问tools.jar的类,而不是在java代理中。

我们的想法是使用代理程序中的gradle应用程序的类加载器。

为此,我们必须从java代理中访问gradle项目中创建的对象之一。 实际上,我通过字节码增强访问它。

如果objectFromFirstApp来自gradle应用程序,我可以通过objectFromFirstApp.getClass().getClassLoader().load("ClassName")访问tools.jar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM