2013-04-01 2 views
0

애플릿에서 이미지 또는 사운드를로드하려고하면 문제가 발생합니다. 애플릿에 LWJGL을 사용하고 이미지/사운드를로드하기 위해 Slick2d를 사용합니다. 하지만 넷빈즈와 애플릿을 실행하면 아무런 문제가 없다 ... 나는 사운드를로드하는 데 사용하는 코드가 :LWJGL/Slick2d 애플릿으로 이미지/사운드로드

public class Files { 
    public static Audio sound; 

    public static void load() { 
     try { 
      sound = AudioLoader.getAudio("WAV", ResourceLoader.getResourceAsStream("/snd/Tir1-16b.wav")); 
     } catch (IOException ex) { 
      Logger.getLogger(Files.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     System.out.println("loaded with success !"); 
    } 
} 

는 그리고 HTML 페이지가 :

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

    <!-- 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="myapps.MyApps"> 

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

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

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

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

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

    <!-- 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"> 
    </applet> 

은 애플릿과 함께 HTML 페이지를 실행하면 콘솔 로그에 표시되는 내용이 나타납니다.

null 
java.lang.reflect.InvocationTargetException 
    at java.awt.EventQueue.invokeAndWait(Unknown Source) 
    at java.awt.EventQueue.invokeAndWait(Unknown Source) 
    at org.lwjgl.util.applet.AppletLoader.run(AppletLoader.java:906) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NoClassDefFoundError: org/newdawn/slick/util/ResourceLoader 
    at myapps.Files.load(Files.java:24) 
    at myapps.MyApps.init(MyApps.java:32) 
    at org.lwjgl.util.applet.AppletLoader.switchApplet(AppletLoader.java:1330) 
    at org.lwjgl.util.applet.AppletLoader$2.run(AppletLoader.java:909) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$200(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$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) 
Caused by: java.lang.ClassNotFoundException: org.newdawn.slick.util.ResourceLoader 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 18 more 

null 변수가 null임을 의미합니다. 그것은 또한 파일이 아마도 찾을 수 없다는 것을 의미합니다. 그래서 애플릿 디렉토리와 애플릿의 .jar에 "snd"와 "sprites"라는 디렉토리를 넣으려고했으나 아무 일도 일어나지 않았습니다 ...

누구든지 나를 도울 수 있습니까? 나는 많은 시간 동안 많은 포럼에서 이런 종류의 문제를 찾으려고 노력했지만 아무도 나를 도왔다. ...

고마워!

+0

'NoClassDefFoundError' 먼저 수정하십시오. Jar은'ResourceLoader'에 위치해 있습니까? –

답변

0

답장을 보내 주셔서 감사합니다. 나는 다음과 같은 내 HTML 페이지에서 "slick.jar"를 추가하여 NoClassDefFoundError의 문제를 해결 :

<param name="al_jars" value="MyApps.jar lwjgl_applet.jar, lwjgl.jar, jinput.jar, lwjgl_util.jar slick.jar"> 

을하지만 지금은 또 다른 문제가 : 나는 많이 읽은

This occurred while 'Initializing real applet' 
access denied ("java.io.FilePermission" ".\snd\Tir1-16b.wav" "read") 
java.security.AccessControlException: access denied ("java.io.FilePermission" ".\snd\Tir1-16b.wav" "read") 
    at java.security.AccessControlContext.checkPermission(Unknown Source) 
    at java.security.AccessController.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkRead(Unknown Source) 
    at java.io.File.exists(Unknown Source) 
    at org.newdawn.slick.util.FileSystemLocation.getResourceAsStream(FileSystemLocation.java:52) 
    at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:61) 
    at myapps.Files.load(Files.java:24) 
    at myapps.MyApps.init(MyApps.java:32) 
    at org.lwjgl.util.applet.AppletLoader.switchApplet(AppletLoader.java:1330) 
    at org.lwjgl.util.applet.AppletLoader$2.run(AppletLoader.java:909) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$200(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$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) 

을 이 문제에 대한 것들, 나는 논문 명령을 사용하여 내 MyApps.jar을 로그인을 시도한 : 지금은 파일 "KEY.RSA"와 "KEY를 볼 수 있기 때문에

keytool -genkey -keyalg rsa -alias key 
keytool -export -alias key -file cert.crt 
jarsigner MyApps.jar key 

그리고 서명자가 근무하고있다. SF "를 MyApps.jar의 META-INF에 추가하십시오.

내가 도움이 필요

, 난 그냥이 문제를 이해하지 못하는 하지만 여전히 문제는 여기에 ... ...

감사합니다!

+0

* "하지만 이제는 또 다른 문제가 있습니다."* 새로운 애플릿과 파일/URL 및 가능하면 새로운 질문에 대한 주제가되어야합니다. –

+0

안녕하세요, 그래 또 다른 문제이지만 이미지 또는 소리를로드하는 여전히 문제가 있습니다. 나는 이것에 대해 많이 조사했지만 정말 아무것도 찾지 못했습니다 ... 애플릿이 서명되지 않았지만 광산이 서명 되었기 때문에 모두가 말합니다. – AntiRGen

+0

이것은 NCDFE에 관한 것입니다. 나는 그것에 더 많은 시간을 보내지 않을 것이다. –

관련 문제