Path: blob/master/external/source/msfJavaToolkit/testCompilation.rb
19516 views
#!/usr/bin/ruby12require 'rubygems'3require 'rjb'45#Rjb::load('.', jvmargs=[])6Rjb::load("#{ENV['JAVA_HOME']}/lib/tools.jar:.",jvmargs=[])78clsJavaCompile = Rjb::import('javaCompile.CompileSourceInMemory')9clsCreateJar = Rjb::import('javaCompile.CreateJarFile')10clsFile = Rjb::import('java.io.File')11system = Rjb::import('java.lang.System')12#clsString = Rjb::import('java.lang.String')1314classNames = [ "HelloWorld1", "HelloWorld2" ]1516codez = Array.new1718classNames.each { |name|19codez << %Q^20public class #{name} {21public static void main(String args[]) {22System.out.println("This is from #{name}.");23}24}^}2526#compileOpts = [""]27#outputDir = system.getProperty('java.io.tmpdir')28outputDir = "testoutdir"29compileOpts = [ "-target", "1.3", "-source", "1.3", "-d", outputDir ]3031success = clsJavaCompile._invoke('CompileFromMemory','[Ljava.lang.String;[Ljava.lang.String;[Ljava.lang.String;', classNames, codez, compileOpts)3233fileOutJar = clsFile.new_with_sig('Ljava.lang.String;', 'output.jar')34filesIn = Array.new3536classNames.each { |name|37filesIn << clsFile.new_with_sig('Ljava.lang.String;', "#{outputDir}/#{name}.class")38}3940clsCreateJar._invoke('createJarArchive', 'Ljava.io.File;[Ljava.io.File;', fileOutJar, filesIn)41424344