2013-01-13 19 views
19

Đối với hồ JNLP của tôi, có một số thông tin nativelib như dưới đây:Cập nhật Để JRE7, không thể tải nativelib jar, nhưng JRE6 hoạt động tốt

<resources os="Windows"> 
    <nativelib href="lib/x264-win.jar" /> 
</resources> 
<resources os="SunOS" arch="sparc"> 
    <nativelib href="lib/x264-SunOS-sparc.jar" /> 
</resources> 
<resources os="SunOS" arch="x86"> 
    <nativelib href="lib/x264-SunOS-x86.jar" /> 
</resources> 

Khi tôi Cập nhật Để JRE7, không thể tải nativelib jar, nhưng JRE6 hoạt động tốt.

Các tải đang nativelib như dưới đây:

String source = "x264.jar"; 
ClassLoader cl = Thread.currentThread().getContextClassLoader(); 
URL url= cl.getResource(source); 

"x264.jar" là một jar trong x264-win.jar, lib/x264-SunOS-sparc.jar hoặc lib/x264-SunOS-x86 .jar.

Khi tôi sử dụng JRE6 để tải x264.jar, nó hoạt động tốt. Nhưng khi tôi cập nhật lên JRE7, nó không thể tải x264.jar.

Khi sử dụng JRE6, url sẽ là "x264.jar" thông tin, như jar: http://test.local:8080/JNLP.jar!/x264.jar, nhưng sử dụng JRE7, url sẽ là null, và tôi tìm thấy mã không tải nativelib "x264.jar"

Liệu bất kỳ một trong những đã tìm thấy JRE7 không thể tải nativelib.jar? Có phải vấn đề khi sử dụng Thread.currentThread(). GetContextClassLoader() để tải "x264.jar"?

+0

Tại sao mã cố gắng tải ** Jar **, trái ngược với việc tải một lib * bên trong * gốc của ký (Jar) bằng cách sử dụng tên chung (tên tệp lib không có phần mở rộng)? –

+1

Có cùng một vấn đề. Mã của tôi cố gắng tải thư viện trong JAR mà không có may mắn. Làm việc với JRE6, nhưng không phải JRE7. – brostbeef

+1

@brostbeef - Có thể bạn nên đặt một Câu hỏi mới, tốt nhất là với SSCCE. Tôi cho một người có rất nhiều rắc rối khi tìm ra câu hỏi này. Điều gì ** là ** JAR này anh ta đang nói về? Có bất kỳ thông báo lỗi hoặc thông điệp tường trình nào không? Bạn đang sử dụng phiên bản Java 7 nào? –

Trả lời

0

Tôi gặp sự cố tương tự; tuy nhiên, ngay cả trong JRE 6, điều này đã không làm được điều này.

Tìm thấy một lỗi mà có thể liên quan đến rằng:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6758884

Rõ ràng JRE có thể gặp khó khăn khi tải tài nativelib.

Lỗi này vẫn mở và nhắm mục tiêu theo phiên bản 8 của java ...

1

Đảm bảo rằng bạn có đúng nhị phân gốc bit tương ứng với JRE của bạn. Nếu bạn đang thử nghiệm trên JRE 64 bit, bạn cần một bản nhị phân gốc 64 bit. Nếu bạn đang thử nghiệm trên JRE 32 bit, bạn cần một bản nhị phân gốc 32 bit. Bạn có thể cần phải bao gồm nguồn lực cho mỗi người trong số ba:

<resources os="Windows" arch="amd64"> 
<resources os="Windows" arch="x86_64"> 
<resources os="Windows" arch="x86"> 
0

Sau đây "dll dựa" applet đang làm việc tốt (bên cạnh những vấn đề bảo mật khi sử dụng 1.7.0_51 (bạn cần phải giảm các thiết lập bảo mật cho môi trường từ nó là tự ký)). Vì vậy, nếu cơ chế tải lib gốc của tệp jnlp bị hỏng thì bạn có thể phân phối tệp .dll của mình cùng với tệp jar bình thường như trong ví dụ trên.

  1. Đặt dlls/sos trong file jar của bạn như trong ví dụ: jssc.jar
  2. tải các thư viện với System.load(libFolderPath + fileSeparator + libName); như sử dụng here.
  3. Như đã đề cập trong Joseph, xin lưu ý sự phân biệt phiên bản hạt mịn giữa các hệ thống win, solaris, linux, arm và i86 và amd64. Vì vậy, nếu bạn, ví dụ: không cung cấp một dll 64Bit và chạy nó với 64Bit Java nó sẽ không hoạt động ...
0

Tôi đã quên tôi đã giải quyết điều này một lúc trước. Tôi thấy rằng tôi đã phải xử lý điều này trong mã Java với System.loadLibrary ("jarNameNoExtension");

Hy vọng rằng sẽ giúp người khác.

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