这是一个非常简单的测试,我遗漏了一些东西,这让我抓狂。
我尝试从groovy脚本调用一个包含单个groovy类的自定义jar。
“产品”类:
package test.products
public class Product{
String name = "Soap";
}
使用Product类的groovy脚本:
try{
test.products.Product product = new test.products.Product();
println(product.name);
}catch(Exception e){
println(e);
}
groovy产品文件位于test\products文件夹中:
src
|- test.groovy
|_ test
|_products
|_ Product.groovy
我从src目录将Product类型编译为类:Soap
运行我的测试,结果是预期的Soap
,因为类文件位于test\product子文件夹中
\src> groovy test.groovy
Soap
创建一个包含Product.class的jar:
\src> jar -cvf0 test-product-lib-0.2.jar test\products\Product.class
added manifest
adding: test/products/Product.class(in = 2713) (out= 2713)(stored 0%)
jar现在与测试脚本位于同一个文件夹中,并且我已经删除了test文件夹,以便scipt能够读取jar:
src
|- test.groovy
|_ test-product-lib-0.2.jar
尝试再次运行该脚本,然后出现以下错误:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
C:\wip\groovy\products\src\test.groovy: 3: unable to resolve class test.products.Product
@ line 3, column 24.
test.products.Product product = new test.products.Product();
我错过了什么?
1条答案
按热度按时间uwopmtnx1#
我发现我需要将jar文件放在lib\ext文件夹中,以便groovy加载它。
一旦我把jar放在ext文件夹中,一切都按预期运行。