Có cách nào để thực hiện một lớp Groovy bằng cách chỉ định gói có dấu chấm, như với java không?Thực hiện một lớp Groovy trong một gói từ dòng lệnh
Ví dụ: File ./my/package/MyClass.groovy:
package my.package
class MyClass {
static void main(String[] args) {
println "ok"
}
}
> cd my/package my/package> groovy MyClass ok > cd ../.. > groovy my/package/MyClass.groovy ok > groovy my/package/MyClass ok > groovy my.package.MyClass Caught: java.io.FileNotFoundException: my.package.MyClass
Tôi đã chờ đợi lệnh cuối cùng để làm việc. Tôi đã thử nhiều cách khác nhau để đặt classpath, không có kết quả.
Có vẻ như câu trả lời đúng, nhưng nó không hoạt động. Tôi đã sử dụng "my.package" làm ví dụ, bằng cách này - một điều tồi tệ mà tôi nhận ra. Dù sao, ngay cả với một tên gói chấp nhận được, và sau khi biên dịch với groovyc, nó không hoạt động. groovyc my/some/MyClass.groovy xuất CLASSPATH =. ls my/some/MyClass.class my/some/MyClass.class groovy my.some.MyClass Bị bắt: java.io.FileNotFoundException: /Users/olivier/my.some.MyClass (/ Users/olivier/my.some.MyClass) ? –
Bạn nói đúng, tôi không biết làm thế nào tôi bỏ lỡ điều đó. Nếu bạn không ngại gian lận một chút, bạn có thể thay thế lệnh groovy bằng java + classpath: java -cp /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar :. my.some.MyClass Ví dụ: bạn có thể thêm bí danh vào bí danh 'g_java' để làm cho nó ít tiết hơn. –
Cảm ơn. Nó hoạt động. Vì vậy, câu trả lời cho câu hỏi ban đầu của tôi là: Không, nó không hoạt động theo cách này trong Groovy. Bạn phải sử dụng javac và java. –