打包到jar文件时eclipse Java代理未运行
我试图实现一个java代理,在应用程序jar之前运行,对于PoC,我在Eclipse中创建了两个java项目,一个是应用程序。java和agent。爪哇
应用程序。爪哇
package test_app;
public class app {
public static void main(String args[]) {
System.out.println("MAIN JAVA CLASS!!!!");
}
}
特工。爪哇
package java_agent;
import java.lang.instrument.*;
public class agent {
public static void premain(String agentArgs, Instrumentation inst) {
System.out.println("INSIDE AGENT");
}
}
我的应用程序清单文件。java看起来像这样
Main-Class: test_app.app
Class-Path: .
我的代理清单文件。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
请帮助我解决这个问题以及如何做。我完全是在日食上做的
# 1 楼答案
很明显,你应该移动你的手臂。将文件分类到指定的包(路径)中,这些包是test_app和java_agent
完成此操作后,制作jar并运行,应该就可以了
此外,为什么不使用eclipse制作jar呢