java - JavaCompiler from JDK 1.6: how to write class bytes directly to byte[] array? -


That's why I recently provided the new information available in JDK 1.6. This code makes it easy to directly compile a string with a .class file:

  string className = "Foo" ; String source code = "..."; JavaCompiler Compiler = Toolpace .getSystemJavaCompiler (); & Lt; JavaSourceFromString & gt; UnitsToCompile = New Arrestist & lt; JavaSourceFromString & gt; () {{Add (new javasuresframe string (classname, source code)); }}; Standard java file manager file manager = compiler.getStandardFileManager (empty, null, empty); Compiler.getTask (empty, file manager, blank, blank, empty units compile) .col (); FileManager.close (); Bytereon OutputStream Boss = New Bytereunootstream (); FileInputStream fis = New FileInputStream (className + ".class"); IOUtils.copyStream (Fis, boss); Return bos.toByteArray ();  

You can catch the source with JavaSourceFromString .

This is very easily sourceCode to Foo.class in current working directory

My question is : Is it possible to directly compile it into the byte [] array, and file I / O completely?

Maybe you can create your own javax.tools JavaFileManager class To implement, where you will return your own implementation of javax.tools.FileObject , which will then write it instead of the disk. Therefore throws IOException for your subclass of javax.tools.FileObject Writer Opener () the method that you will return to java.io.StringWriter . All methods should be converted to their string counterparts.


Comments

Popular posts from this blog

oracle - The fastest way to check if some records in a database table? -

php - multilevel menu with multilevel array -

jQuery UI: Datepicker month format -