我们有一个项目,我们无法在命令行中使用类路径(-cp)参数。我们决定在运行时使用rootLoader加载必要的类。但是,我们遇到了使用rootLoader在运行时加载类的问题。以下是两个简单的例子。第一个工作,但第二个不起作用。当然,第二个例子是我需要工作的例子。这两个示例都使用cmd文件运行。Groovy rootLoader问题
工作示例
println this.class.name
println new File("W:/JavaApps/lib/TWS_Test.jar").exists()
this.class.classLoader.rootLoader.addURL(new URL("file:///W:/JavaApps/lib/TWS_Test.jar"))
def simpleJar = Class.forName("Simple_Jar").newInstance();
simpleJar.printGreeting()
println simpleJar.returnGreeting()
println "Hello, TWS!"
这是从上面的输出。
HelloTWS_LC
true
Java-printGreeting
Java-returnGreeting
Hello, TWS!
"finish HelloTWS.groovy for High Volume Letters - rc 0"
在这个例子中,其明确定义了类和主要方法,rootLoader返回从非工作示例空
class HelloTWS_LC {
static void main(def args) {
println this.class.name
println new File("W:/JavaApps/lib/TWS_Test.jar").exists()
this.class.classLoader.rootLoader.addURL(new URL("file:///W:/JavaApps/lib/TWS_Test.jar"))
def simpleJar = Class.forName("Simple_Jar").newInstance();
simpleJar.printGreeting()
println simpleJar.returnGreeting()
println "Hello, TWS!"
}
}
输出。
java.lang.Class
true
"finish HelloTWS.groovy for High Volume Letters - rc 1"
有在cmd窗口中的错误。
W:\JavaApps\DMCGroovyScripts>groovy W:\JavaApps\DMCGroovyScripts\HelloTWS_LC.groovy 1>W:\JavaApps\DMCGroovyScripts\HelloTWS.txt
Caught: java.lang.NullPointerException: Cannot get property 'rootLoader' on null object java.lang.NullPointerException: Cannot get property 'rootLoader' on null object
at HelloTWS_LC.main(HelloTWS_LC.groovy:5)
为什么你不能使用classpath参数? – 2015-02-24 07:02:15
@ Voy3966是我的答案有用吗?问题解决了吗? – Opal 2015-03-08 19:20:37