javassist로 클래스를 만들고 사용 가능하게 만들기

남자 이름

다음을 수행하고 싶습니다.

try {
    Class.forName("MyClass");
} catch(ClassNotFoundException e) {
    ClassPool pool = ClassPool.getDefault();
    CtClass cc = pool.makeClass("MyClass");
    Class.forName("MyClass");
}

시도했지만 항상 작동하지 않는 것 같습니다 ... 한 컨텍스트에서 작동하지만 다른 컨텍스트에서는 동일한 코드가 두 번째 "Class.forName ("MyClass ")"에서 충돌합니다 ... cc.toClass()항상 호출 올바른 클래스를 가져오고 시도 cc.writeFile()했지만 차이가 없습니다. 여하튼, 어떤 경우에는 두 번째 Class.forName이 클래스를 찾고 다른 경우에는 그냥 깨집니다 ... 뭔가 빠졌나요?

남자 이름

내 코드가 어디에서 호출했는지에 따라 다른 클래스 로더에서 클래스를 생성한다는 것을 알았습니다. 다음을 수행하여이 문제를 해결했습니다.

try {
    Class.forName("MyClass");
} catch(ClassNotFoundException e) {
    ClassPool pool = ClassPool.getDefault();
    CtClass cc = pool.makeClass("MyClass");
    cc.toClass(this.getClass().getClassLoader(), this.getClass().getProtectionDomain());
    Class.forName("MyClass");
}

toClass적절한 Classloader를 사용 하여 메서드를 호출하면 트릭이 발생했습니다. 생성 된 클래스가 사용할 수있는 클래스 로더를 제어하는 ​​방법이 확실하지 않았지만 classloader 매개 변수가있는 메서드는 내가 찾던 것을 정확히 허용합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQLite Android를위한 유용하고 확장 가능한 클래스 만들기

분류에서Dev

동적으로 할당 된 메모리를 사용 가능하게 만들기

분류에서Dev

일반 클래스를 목록으로 사용하여 개체 만들기

분류에서Dev

새로 만들기를 사용하거나 사용하지 않고 C #에서 개체 만들기

분류에서Dev

사용자 지정 클래스를 사용하여 프로그래밍 방식으로 UIView 만들기 (Swift 4)

분류에서Dev

파생 클래스를 사용하여 기본 클래스 개체 만들기

분류에서Dev

C ++에서 가능한 피연산자로 클래스를 사용한 연산 만들기

분류에서Dev

스토어를 사용하여 Svelte에서 클래스 인스턴스를 반응 형으로 만들기

분류에서Dev

Linux에서 strlcpy를 사용 가능하게 만들기

분류에서Dev

LLVM C ++ API를 사용하여 "클래스"정의 만들기

분류에서Dev

클래스를 사용하여 Tkinter Gui 만들기

분류에서Dev

SqlCommand를 사용하는 클래스 만들기

분류에서Dev

Javascript (상속)를 사용하여 수퍼 클래스 만들기

분류에서Dev

메서드를 사용하여 슈퍼 클래스 만들기

분류에서Dev

클래스를 사용하여 객체 만들기

분류에서Dev

내 헤더 이미지를 액세스 가능하고 사용자 친화적으로 만들기

분류에서Dev

NativeScript에서 JS를 사용하여 사용자 정의 클래스를 만들고 기본 Android에서 사용

분류에서Dev

사전을 인수로 사용하여 클래스 개체 만들기

분류에서Dev

클래스를 만들지 않고 람다를 사용하여 속성별로 정렬

분류에서Dev

JS를 사용하여 HTML에서 img를 클릭 가능하게 만들기

분류에서Dev

typescript : 클래스 객체를 반복 가능하게 만들기

분류에서Dev

Riverpod Flutter를 사용하여 로그인 기능 만들기

분류에서Dev

글로벌 클래스 초기화 및 노드 애플리케이션 전체에서 사용 가능하게 만들기

분류에서Dev

Webpack 4 : 웹 사이트 전체에서 Jquery를 전 세계적으로 사용 가능하게 만들기

분류에서Dev

Outlook 추가 기능을 사용하여 매크로를 만들고 실행할 수 있습니까?

분류에서Dev

BeautifulSoup으로 정보를 얻고 추출 가능하게 만들기

분류에서Dev

PS1 프롬프트를 새로 고침 가능하게 만들기

분류에서Dev

LaTeX에서 회고록 클래스를 사용할 때 어떻게 참조를 기본 장 대신 섹션으로 만들 수 있습니까?

분류에서Dev

Django에서 이식 가능한 노드를 만들고이를 사용하여 트리 만들기

Related 관련 기사

  1. 1

    SQLite Android를위한 유용하고 확장 가능한 클래스 만들기

  2. 2

    동적으로 할당 된 메모리를 사용 가능하게 만들기

  3. 3

    일반 클래스를 목록으로 사용하여 개체 만들기

  4. 4

    새로 만들기를 사용하거나 사용하지 않고 C #에서 개체 만들기

  5. 5

    사용자 지정 클래스를 사용하여 프로그래밍 방식으로 UIView 만들기 (Swift 4)

  6. 6

    파생 클래스를 사용하여 기본 클래스 개체 만들기

  7. 7

    C ++에서 가능한 피연산자로 클래스를 사용한 연산 만들기

  8. 8

    스토어를 사용하여 Svelte에서 클래스 인스턴스를 반응 형으로 만들기

  9. 9

    Linux에서 strlcpy를 사용 가능하게 만들기

  10. 10

    LLVM C ++ API를 사용하여 "클래스"정의 만들기

  11. 11

    클래스를 사용하여 Tkinter Gui 만들기

  12. 12

    SqlCommand를 사용하는 클래스 만들기

  13. 13

    Javascript (상속)를 사용하여 수퍼 클래스 만들기

  14. 14

    메서드를 사용하여 슈퍼 클래스 만들기

  15. 15

    클래스를 사용하여 객체 만들기

  16. 16

    내 헤더 이미지를 액세스 가능하고 사용자 친화적으로 만들기

  17. 17

    NativeScript에서 JS를 사용하여 사용자 정의 클래스를 만들고 기본 Android에서 사용

  18. 18

    사전을 인수로 사용하여 클래스 개체 만들기

  19. 19

    클래스를 만들지 않고 람다를 사용하여 속성별로 정렬

  20. 20

    JS를 사용하여 HTML에서 img를 클릭 가능하게 만들기

  21. 21

    typescript : 클래스 객체를 반복 가능하게 만들기

  22. 22

    Riverpod Flutter를 사용하여 로그인 기능 만들기

  23. 23

    글로벌 클래스 초기화 및 노드 애플리케이션 전체에서 사용 가능하게 만들기

  24. 24

    Webpack 4 : 웹 사이트 전체에서 Jquery를 전 세계적으로 사용 가능하게 만들기

  25. 25

    Outlook 추가 기능을 사용하여 매크로를 만들고 실행할 수 있습니까?

  26. 26

    BeautifulSoup으로 정보를 얻고 추출 가능하게 만들기

  27. 27

    PS1 프롬프트를 새로 고침 가능하게 만들기

  28. 28

    LaTeX에서 회고록 클래스를 사용할 때 어떻게 참조를 기본 장 대신 섹션으로 만들 수 있습니까?

  29. 29

    Django에서 이식 가능한 노드를 만들고이를 사용하여 트리 만들기

뜨겁다태그

보관