Tôi có thể tạo tệp jar thực thi với Eclipse. Giả sử nó được gọi là ast.jar
và lớp Chính là ASTExplorer. Tôi có thể xác minh rằng thao tác này hoạt động với java -jar ast.jar
.Phép thuật đằng sau nhật thực đã tạo ra tệp jar thực thi
Sau đó, tôi giải nén tệp jar trong một thư mục riêng và xác minh rằng ASTExplorer nằm trong thư mục astexplorer. Nhưng khi tôi thực hiện lệnh này java -cp . astexplorer.ASTExplorer
Tôi nhận được lỗi này.
java -cp . astexplorer/ASTExplorer
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
Điều này không có thư mục org/eclipse/swt trong tệp jar.
Phép thuật đằng sau tệp jar thực thi là gì? Tại sao nó không chạy khi giải nén?
Bạn nên thử tạo JAR của bạn với kiến, không có ma thuật đen nhật thực. –
Classpath của bạn là gì khi bạn chạy 'java -jar ast.jar'. Khi bạn giải nén tệp jar, đường dẫn lớp của bạn là '.'. Tôi đoán rằng có một biến môi trường CLASSPATH được đặt thành thứ gì đó cho phép 'java -jar ast.jar' hoạt động. – km1