2010-08-24 6 views
7

java.lang.UnsatisfiedLinkError: không có JMagick trong java.library.path tại java.lang.ClassLoader.loadLibrary (ClassLoader.java:1754) tại java.lang.Runtime .loadLibrary0 (Runtime.java:823) tại java.lang.System.loadLibrary (System.java:1045)Lỗi JMagick khi cố tải một tệp - UnsatisfiedLink

khi cố gắng sử dụng mã

ImageInfo info; 

    try { 
     info = new ImageInfo(); 
     //image = new MagickImage(info); 

    } catch (MagickException e) { 
     logger.error(InsightsHelper.getStackTrace(e)); 
    } 

bất kỳ ý tưởng tại sao điều này đang xảy ra? Tôi đang sử dụng nhật thực trên OSX

Trả lời

2

Câu trả lời đơn giản là JVM đang cố tìm một thư viện gốc được JMagick sử dụng và không thành công. Hoặc bạn không có thư viện gốc nào cả, hoặc nó không phải là nơi mà JVM đang tìm kiếm nó.


I downloaded a package for osx from here: joggame.com/software/jmagick.html ran the configure/make/make install and all went well. What else would I have to set up for java to find it?

Bạn cần phải tìm ra nơi "make install" cài đặt các DLL bản địa và nói với Java để tìm nó ở đúng nơi:

  • Nếu bạn đang tung ra từ bên trong Eclipse , làm theo các thủ tục trong câu trả lời của trigoman.

  • Nếu bạn đang tung ra từ dòng lệnh, trực tiếp hoặc thông qua một kịch bản, sau đó bạn cần phải bao gồm tùy chọn này (hoặc tương đương) trong java lệnh của bạn:

    java -Djava.library.path=/some/folder/ .... 
    

    Lưu ý rằng đây là một JVM và phải đi trước tên lớp.

+0

Tôi đã tải xuống một gói cho osx từ đây: http://joggame.com/software/jmagick.html chạy cấu hình/make/make install và tất cả đều tốt. Tôi sẽ phải thiết lập gì cho java để tìm nó? – James

2

Bạn cần phải thêm các tệp nhị phân mà bạn đã biên dịch vào đường dẫn để Eclipse có thể nhìn thấy nó. Đầu tiên thêm JMagick.jar làm thư viện, sau đó trong thuộc tính dự án-> Java Build Path -> Libraries, bạn nhấn vào jar jmagick mà bạn đã thêm vào dự án này và chỉnh sửa vị trí cho "Native library", trong đó trường hợp nó sẽ là nơi libJMagick-6.2.6.dylib được đặt vì đó là những gì liên kết mà bạn cung cấp nói.