Bạn có thể gói .dll
vào .jar
, nhưng tệp .dll
thực phải được đóng gói từ đó trước khi có thể tải vì cách Windows xử lý .dll
s. Không có cách nào để tải một số .dll
trực tiếp từ bên trong .jar
.
This question dường như có triển khai thích hợp. Lưu ý, mặc dù, nó có phần dễ bị lỗi: nếu chương trình không viết quyền truy cập đến bất cứ nơi nào nó sẽ trích xuất các .dll
, bạn đang ở trong một tình huống kỳ quái; bạn không thể tải số .dll
vì bạn không có quyền ghi trước tiên.
Một giải pháp mạnh mẽ hơn là sử dụng một số loại cài đặt để cài đặt toàn bộ ứng dụng vào một hệ thống phân cấp thư mục như
/whatEver/myApp/ (The working directory of the app.)
/whatEver/myApp/myApp.jar (The main app.)
/whatEver/myApp/lib/library.dll (The JNI library.)
Sau đó, bạn có thể tải dll chỉ đơn giản là sử dụng một đường dẫn tương đối đến thư mục làm việc,
System.loadLibrary("lib/library.dll");
Để mạnh mẽ hơn nữa, bạn sẽ muốn đảm bảo rằng bạn đang chạy một JVM với số bit thích hợp trước khi thử tải thư viện. Một thực tế ít được quảng cáo là một máy ảo 64-bit không thể tải các thư viện 32 bit, cũng như ngược lại. Xem câu hỏi this.
Nguồn
2010-09-27 09:46:06
http://forums.sun.com/thread.jspa?threadID=5358593 Điều này có thể giải quyết được sự cố của bạn –