2013-01-15 4 views
1

애플릿 및 일부 기본 DLL 파일을로드하기 위해 JNLP를 만들었습니다. 각 구성 요소UnsatisfiedLinkError + JNLP + Applet + DLL

JNLP

<?xml version="1.0" encoding="UTF-8"?> 
<!-- href attribute contains relative path; 
    codebase attribute not specified --> 
<jnlp href="myKad.jnlp"> 
    <information> 
     <title>MyKad Reader Applet</title> 
     <vendor>MyKad</vendor> 
    </information> 
    <security> 
     <all-permissions/> 
    </security> 
    <resources> 
     <!-- Application Resources --> 
     <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" /> 
     <jar href="HLB_Mykad-0.0.1-SNAPSHOT.jar" main="true"/> 
     <nativelib href="HLB_Mykad-0.0.1-SNAPSHOT.jar" download="eager"/> 
    </resources> 
    <applet-desc 
      name="MyKad Applet" 
      main-class="com.glexim.applet.GleximApplet" 
      width="1" 
      height="1"> 
    </applet-desc> 
    <update check="background"/> 
</jnlp> 

JAR (HLB_Mykad-0.0.1-SNAPSHOT.jar) 구조의 코드 (JAR의이 최고 LAVEL에 포장되어)

com.glexim.applet.GleximApplet 
META-INF 
Sample.dll 

HTML 코드

는 다음과 같습니다
<applet jnlp_href="./applet/myKad.jnlp" 
code="com.glexim.applet.GleximApplet" id="gleximApplet" 
mayscript="true" width="0px" style="" /> 

애플릿을로드하는 중 애플릿을 사용할 때 다음 예외가 발생합니다. 단독 :

java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: no Sample in java.library.path 
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.UnsatisfiedLinkError: no Sample in java.library.path 
at java.lang.ClassLoader.loadLibrary(Unknown Source) 
at java.lang.Runtime.loadLibrary0(Unknown Source) 
at java.lang.System.loadLibrary(Unknown Source) 
at com.glexim.zf1.MyKad$1.run(MyKad.java:19) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.glexim.zf1.MyKad.<clinit>(MyKad.java:13) 
at com.glexim.applet.GleximApplet.<init>(GleximApplet.java:43) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at java.lang.Class.newInstance0(Unknown Source) 
at java.lang.Class.newInstance(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source) 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$400(Unknown Source) 
at java.awt.EventQueue$2.run(Unknown Source) 
at java.awt.EventQueue$2.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 
Exception: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: no Sample in java.library.path 

내 애플릿는 애플릿을 서명 및 애플릿 내부의 모든 DLL 파일도 동일한 서명 서명됩니다.

+0

nativelibs를 다른 항아리 (기본 항아리에서 분리)에 넣어보십시오. –

+0

안녕 Gilberto, 답장 보내 주셔서 감사합니다. 나도 그걸 시도했지만 작동하지 않았다. – BTJ

답변

1

네이티브 자원을 기술하여 JNLP 파일의 다른 부분을 만듭니다

<resources os="Windows" arch="x86"> 
    <nativelib href="jar-with-nativelibs.jar"/> 
</resources> 

(당신은 지원하는 각 운영 체제 및 아키텍처에 대해 하나의 항아리를 사용하지 않아도하지만 권장)

그리고 그 후, java.library.path 특성 정의 :

<property key="java.library.path" value="." /> 

을 그리고 당신은 갈 수 있어요.