[英]Java code in vscode console not running correctly when packaged as .jar
[英]Java Agent not running when packaged into jar file
I am trying to implement a java agent to run before an application jar, for PoC i have created 2 Java Projects in Eclipse, one is app.java and agent.java,
app.java
package test_app;
public class app {
public static void main(String args[]) {
System.out.println("MAIN JAVA CLASS!!!!");
}
}
代理.java
package java_agent;
import java.lang.instrument.*;
public class agent {
public static void premain(String agentArgs, Instrumentation inst) {
System.out.println("INSIDE AGENT");
}
}
我的 app.java 清单文件看起来像这样,
Main-Class: test_app.app
Class-Path: .
我的agent.java清单文件看起来像这样,
PreMain-Class: java_agent.agent
我已经使用这些命令执行了这两个命令,
javac app.java
javac agent.java
jar -cvfm app.jar manifest.txt app.class
jar -cvfm agent.jar manifest.txt agent.class
然后我将.jar 文件复制到另一个目录并运行,
java -javaagent:agent.jar -jar app.jar
但是组合,它不起作用并给出这样的错误,
Exception in thread "main" java.lang.ClassNotFoundException: agent_app.agent
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:431)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:525)
*** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at ./open/src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 422
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed
请帮助我解决此问题以及如何解决。 我完全在 Eclipse 上做。
很明显:您应该将.class 文件移动到您指定的包(路径)中,它们是test_app 和java_agent。
完成此操作后,制作 jar 并运行,应该没问题。
此外,为什么不使用 eclipse 制作 jar?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.