有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

打包到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) 个答案

  1. # 1 楼答案

    很明显,你应该移动你的手臂。将文件分类到指定的包(路径)中,这些包是test_app和java_agent

    完成此操作后,制作jar并运行,应该就可以了

    此外,为什么不使用eclipse制作jar呢