Use a custom classloader at compile time

前端 未结 6 1650
星月不相逢
星月不相逢 2021-01-14 04:16

Is it possible to specify a custom classloader for javac (or some alternative java compiler)?

I\'d love such a feat because it would allow me to compile classes that

相关标签:
6条回答
  • 2021-01-14 04:24

    When you run javac you can specify the classloader like so:

    javac -J-Djava.system.class.loader=org.awesome.classloader sourcefile.java
    
    0 讨论(0)
  • 2021-01-14 04:26

    Just to expand on Michael's answer, if you cannot use Java6, look at the sun. packages--they have always been available to java apps and have always had a compiler in there, it's just not standard Java so you don't hear about it much and the API is subject to change (like moving it to the javax.tools package!)

    0 讨论(0)
  • 2021-01-14 04:26

    If the classes all conform to the same Interface you could just provide that at compile time..

    If not then I don't see what you are gaining by not outputing .java files based on the DB and compiling that.

    0 讨论(0)
  • 2021-01-14 04:41

    It may be possible to initialize a custom classloader and then use it while calling the new Java 6 Compiler API in javax.tools.

    0 讨论(0)
  • 2021-01-14 04:41

    The only two ways I know of plugging directly into javac (as run on the command line) are via the annotation processor or via a compiler-specific hack.

    0 讨论(0)
  • 2021-01-14 04:41

    Take a look at ClassLoader.defineClass. I used it myself for loading plugins into a program I created, in which I loaded a file's bytes into a new class.

    0 讨论(0)
提交回复
热议问题