2012-04-13 29 views
9

Được rồi, tôi sẽ nói bây giờ tôi biết rất ít về Java. Tôi đã được tặng Bouncy Castle Jar và nói rằng sẽ có những gì tôi cần để thực hiện nhiệm vụ này. Tệp Jar là bcprov-jdk15on-147.jar. Tôi cũng đang làm điều này trên một máy Unix được duy trì bởi trường học của tôi, vì vậy tôi không thể vào và chơi với tất cả các tệp Java.Rắc rối tích hợp BouncyCastle Jar

Khi tôi biên dịch lớp học của tôi sử dụng Javac (cụ thể là tôi sử dụng lệnh javac -classpath bcprov-jdk15on-147.jar encrypt.java), nó biên dịch mà không có lỗi, nhưng khi tôi đi để chạy các chương trình sau đó sử dụng lệnh java encrypt, tôi nhận được thông báo lỗi này:

Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider 
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:251) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 

Tệp Jar của tôi nằm trong thư mục chính của tôi với tất cả các tệp khác của tôi, chỉ trong trường hợp nó phải đi đâu đó đặc biệt và đó là những gì tôi không làm.

Khi tôi làm java -classpath bcprov-jdk15on-147.jar encrypt này là lỗi tôi nhận được:

Exception in thread "main" java.lang.NoClassDefFoundError: encrypt 
Caused by: java.lang.ClassNotFoundException: encrypt 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 

Tại sao tôi phải khó khăn khi chạy chương trình biên dịch?

Trả lời

6

Loại này để chạy chương trình:

java -classpath bcprov-jdk15on-147.jar:. encrypt 

Đó là bởi vì chương trình của bạn cũng cần phải có bất kỳ thư viện nó sử dụng như một phần của classpath tại thời điểm chạy, không chỉ tại thời gian biên dịch.

+0

Tôi vừa thử điều đó và nhận được thông báo lỗi ở trên: – user1174511

+1

Aha !. Đó là một vấn đề classpath. Và "lỗi hơi khác" này bạn đang nhận được là gì? Tôi cập nhật câu trả lời của mình để xem xét đến classpath cục bộ, thử lại lần nữa. –

+0

Ah! Điều đó đã làm nó! Cảm ơn! – user1174511

Các vấn đề liên quan