2012-05-23 3 views
0

LWJGL 응용 프로그램을 애플릿에 포팅하여 온라인으로 재생하려고 시도하고 있지만, 해당 응용 프로그램에 올바른 경로를 지정하는 방법을 알 수 없습니다. 원주민. 여기 LWJGL 애플릿 java.lang.UnsatisfiedLinkError : java.library.path에 lwjgl이 없습니다.

이 된 .java 애플릿 코드 :

package net.foxycorndog.idk.applet; 

import java.applet.Applet; 
import java.awt.BorderLayout; 
import java.awt.Canvas; 

import net.foxycorndog.idk.Idk; 

import org.lwjgl.LWJGLException; 
import org.lwjgl.opengl.Display; 

public class IdkApplet extends Applet 
{ 
    Canvas drawCanvas; 

    Idk  idk; 

    /** is the game loop running */ 
    boolean running = false; 

    public void startLWJGL() 
    { 
     idk.start(drawCanvas); 
    } 

    /** 
    * Tell game loop to stop running, after which the LWJGL Display will be 
    * destroyed. The main thread will wait for the Display.destroy(). 
    */ 
    private void stopLWJGL() 
    { 
     running = false; 

     try 
     { 
      idk.getGameThread().join(); 
     } 
     catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    public void start() 
    { 

    } 

    public void stop() 
    { 

    } 

    /** 
    * Applet Destroy method will remove the canvas, before canvas is destroyed 
    * it will notify stopLWJGL() to stop the main game loop and to destroy the 
    * Display 
    */ 
    public void destroy() 
    { 
     super.destroy(); 
     System.exit(0); 
    } 

    public void init() 
    { 
     Idk.init(); 

     idk = new Idk(); 

     setLayout(new BorderLayout()); 
     try 
     { 
      drawCanvas = new Canvas() 
      { 
       public final void addNotify() 
       { 
        super.addNotify(); 
        startLWJGL(); 
       } 

       public final void removeNotify() 
       { 
        stopLWJGL(); 
        super.removeNotify(); 
       } 
      }; 

      setSize(640, 512); 

      drawCanvas.setSize(getWidth(), getHeight()); 
      add(drawCanvas); 
      drawCanvas.setFocusable(true); 
      drawCanvas.requestFocus(); 
      drawCanvas.setIgnoreRepaint(true); 
      setVisible(true); 
     } 
     catch (Exception e) 
     { 
      System.err.println(e); 
      throw new RuntimeException("Unable to create display"); 
     } 
    } 

    protected void initGL() 
    { 

    } 
} 

Heres는 HTML 코드 :

<html> 
    <body> 
     <center> 
      <div class="rounded"> 
       <applet code="net.foxycorndog.idk.applet.IdkApplet" name="theapplet" archive="Idk.jar" width="640" height="512" codebase="../applets/Idk"> 
        <!-- The following tags are mandatory --> 

        <!-- Name of Applet, will be used as name of directory it is saved in, and will uniquely identify it in cache --> 
        <param name="al_title" value="appletloadertest"> 

        <!-- Main Applet Class --> 
        <param name="al_main" value="net.foxycorndog.idk.applet.IdkApplet"> 

        <!-- List of Jars to add to classpath --> 
        <param name="al_jars" value="lwjgl_applet.jar.pack.lzma, lwjgl.jar.pack.lzma, lwjgl_util.jar.pack.lzma"> 

        <!-- signed windows natives jar in a jar --> 
        <param name="al_windows" value="windows_natives.jar.lzma"> 

        <!-- signed linux natives jar in a jar --> 
        <param name="al_linux" value="linux_natives.jar.lzma"> 

        <!-- signed mac osx natives jar in a jar --> 
        <param name="al_mac" value="macosx_natives.jar.lzma"> 

        <!-- signed solaris natives jar in a jar --> 
        <param name="al_solaris" value="solaris_natives.jar.lzma"> 

        <!-- Tags under here are optional --> 

        <!-- whether to use cache - defaults to true --> 
        <!-- <param name="al_cache" value="true"> --> 

        <!-- Version of Applet (case insensitive String), applet files not redownloaded if same version already in cache --> 
        <!-- <param name="al_version" value="0.1"> --> 

        <!-- Specify the minimum JRE version required by your applet, defaults to "1.5" --> 
        <!-- <param name="al_min_jre" value="1.6"> --> 

        <!-- background color to paint with, defaults to white --> 
        <!-- <param name="boxbgcolor" value="#000000"> --> 

        <!-- foreground color to paint with, defaults to black --> 
        <!-- <param name="boxfgcolor" value="#ffffff"> --> 

        <!-- logo to paint while loading, will be centered, defaults to "appletlogo.gif" --> 
        <!-- <param name="al_logo" value="appletlogo.gif"> --> 

        <!-- progressbar to paint while loading. Will be painted on top of logo, width clipped to percentage done, defaults to "appletprogress.gif" --> 
        <!-- <param name="al_progressbar" value="appletprogress.gif"> --> 

        <!-- whether to run in debug mode --> 
        <!-- <param name="al_debug" value="true"> --> 

        <!-- whether to prepend host to cache path - defaults to true --> 
        <!-- <param name="al_prepend_host" value="true"> --> 

        <param name="separate_jvm" value="true"> 

        <p> 
         You're browser must have java enabled to view this content. If you do not have jave installed or the newest version, you can click here to update it to the latest version. 
         <a href="http://java.com/en/download/">Java</a> 
        </p> 
       </applet> 
      </div> 
     </center> 
    </body> 
</html> 

Heres는 오류 출력 : 방법 사이에 상당한 차이가 있습니다

Exception in thread "Thread-14" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) 
at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
at java.lang.System.loadLibrary(System.java:1045) 
at org.lwjgl.Sys$1.run(Sys.java:73) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66) 
at org.lwjgl.Sys.loadLibrary(Sys.java:95) 
at org.lwjgl.Sys.<clinit>(Sys.java:112) 
at org.lwjgl.opengl.Display.<clinit>(Display.java:132) 
at net.foxycorndog.presto2d.PrestoGL2D.createFrame(PrestoGL2D.java:172) 
at net.foxycorndog.idk.Frame.init(Frame.java:163) 
at net.foxycorndog.idk.Frame.<init>(Frame.java:75) 
at net.foxycorndog.idk.Idk$1$1.<init>(Idk.java:118) 
at net.foxycorndog.idk.Idk$1.run(Idk.java:118) 
+0

[LWJGL AppletLoader] (http://www.lwjgl.org/wiki/index.php?title=Deploying_with_the_LWJGL_Applet_Loader_-_Introduction)를 사용하고 있습니까? – Perception

+0

아니요, 아니에요. 이제 나는 그것이 작동하고있다. 자원을 검색하는 데 문제가 있습니다. "java.lang.RuntimeException : 자원을 찾을 수 없습니다 : res/images/font/pixel.ttf \t at org.newdawn.slick.util.ResourceLoader.getResourceAsStream (ResourceLoader.java:69) ..."아이디어가 있습니까? –

+0

나는 아래 답변에 대한 나의 의견을 말했고, 당신의 (초기) 문제를 해결 한 것으로 보이기 때문에 받아 들여도된다. 리소스로드 문제의 경우 pls는 별도의 질문을 게시하고 리소스로드 코드 및 프로젝트 저장 구조를 저장하는 위치를 포함시킵니다. – Perception

답변

0

네이티브 라이브러리는 애플릿의 데스크톱 응용 프로그램에서 실행될 때 Java 런타임에 의해 배치됩니다. 애플릿은 클라이언트 브라우저에서 실행되도록 번들되고 전송되므로 필요한 대부분의 종속성을 포함해야합니다. 특히 참조하는 기본 라이브러리의 경우에는 마찬가지입니다. 운좋게도 LWJGL은 애플릿으로 배치 된 애플리케이션을 관리하기위한 도우미 클래스를 제공합니다.

LWJGL AppletLoader에 대한 자세한 내용과 응용 프로그램에 통합하는 방법

0

애플릿 태그의 머리는, 잘못

<applet code="org.lwjgl.util.applet.AppletLoader" 
    archive="lwjgl_util_applet.jar" 
    codebase="." 
    width="640" height="512"> 

는 또한 idk.jar가 al_jars 매개 변수를 추가해야 다음과 같이해야한다. 나머지는 올바르게 보입니다.

관련 문제