1
와 다른 클래스 나는 두 개의 프로젝트가 있습니다.로드와 Javassist
프로파일 러가 기본 응용 프로그램 안에 있으면 잘 동작합니다. 프로파일 러가 기본 응용 프로그램 외부에있을 때 Eclipse의 빌드 경로에 기본 응용 프로그램 jar 파일을 가져와 응용 프로그램을 계측 할 수 있어야합니다.
내가 에마처럼 명령 줄에서 내 기본 응용 프로그램 내 프로파일 러를 실행하려면 : application.jar에는
하지만 돈을 실행 profiler.jar -jar
자바 내 프로파일 러에게 알리는 방법을 모르겠다.
final String arg = args[0]; final String[] commandArgs = new String[args.length - 1]; System.arraycopy(args, 1, commandArgs, 0, commandArgs.length-1); loader.run(arg, commandArgs);
하지만 그것을 실행할 때, 내가 얻을 :
[[email protected] build]$ java -jar profiler.jar bookstore.jar java.lang.ClassNotFoundException: bookstore.jar at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at javassist.Loader.delegateToParent(Loader.java:429) at javassist.Loader.loadClass(Loader.java:315) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at javassist.Loader.run(Loader.java:289) at com.modeln.Profiler.main(Profiler.java:93)
그래서 나는 노력을 내가 그렇게하려고
public static void main(String[] args) throws Exception { Loader loader = new Loader(); loader.addTranslator(ClassPool.getDefault(), new Profiler()); try { loader.run("com.application.bookstore.test.Test", null); } catch (Throwable e) { e.printStackTrace(); } }
: 여기
내 프로파일 러의 주요 코드 내 메인 클래스 디렉토리에 직접 실행 :[[email protected] test]$ ls profiler.jar Test.class [[email protected] test]$ java -jar profiler.jar Test java.lang.NoClassDefFoundError: Test (wrong name: com/application/bookstore/test/Test) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.lang.ClassLoader.defineClass(ClassLoader.java:480) at javassist.Loader.findClass(Loader.java:380) at javassist.Loader.loadClass(Loader.java:312) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at javassist.Loader.run(Loader.java:289) at com.modeln.Profiler.main(Profiler.java:93)
그래서 외부 jar 프로젝트에서 프로파일 작성 프로그램을 실행하는 방법에 대한 아이디어가 있습니까? 고마워요!