2011-01-25 1 views
2

Я разрабатываю апплет для некоторых файлов OpenGL ES с помощью JOGL. В eclipse я могу запустить апплет, но в браузере у меня проблемы, потому что консоль java печатает NoSuchMethodError в моей строке, где я создаю экземпляр GLCanvas.Jogl Applet с JNLP работает в eclipse, но не в браузере

GLProfile glp = GLProfile.get(GLProfile.GL2ES2); 

GLCapabilities caps = new GLCapabilities(glp); 
caps.setSampleBuffers(true); 
caps.setNumSamples(8); 

glCanvas = new GLCanvas(caps); // throws NoSuchMethodError 

Исключение:

Exception in thread "thread applet-de.beuthhochschule.bachelor.martin.Benchmark-1" java.lang.NoSuchMethodError: javax.media.opengl.awt.GLCanvas.<init>(Ljavax/media/opengl/GLCapabilities;)V 
at de.beuthhochschule.bachelor.martin.Benchmark.initComponents(Benchmark.java:60) 
at de.beuthhochschule.bachelor.martin.Benchmark.init(Benchmark.java:42) 
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1620) 
at java.lang.Thread.run(Thread.java:662) 

Я создал банку с и без JOGL LIBS (JOGL, gluegen, NativeWindow и тритон), но это просто не работает. Есть ли у кого-то идеи?

Мой JNLP:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp href="applet-benchmark.jnlp" codebase="."> 
 <information> 
   <title>WebGL-Benchmark</title> 
   <vendor>Martin Breuer</vendor> 
   <homepage href="http://localhost/"/> 
   <description>Native reference implementation</description> 
   <description kind="short">Reference implementation of the WebGL Benchmark</description> 
   <offline-allowed/> 
 </information> 

   <resources> 
     <j2se href="http://java.sun.com/products/autodl/j2se" version="1.6+"/> 
     <property name="sun.java2d.noddraw" value="true"/> 
     <jar href="http://localhost/benchmark.jar" main="true"/> 
     <extension name="newt-all-awt" href="http://jogamp.org/deployment/webstart/newt-all-awt.jnlp" /> 
   </resources> 

 <applet-desc 
     name="WebGL-Benchmark" 
     main-class="de.beuthhochschule.bachelor.martin.Benchmark" 
     width="660" 
     height="500"> 
 </applet-desc> 
</jnlp> 

Мой апплет тег:

<applet codebase="." code="org.jdesktop.applet.util.JNLPAppletLauncher" width=600 height=400 
 archive="http://jogamp.org/deployment/util/applet-launcher.jar, 
          http://jogamp.org/deployment/webstart/nativewindow.all.jar, 
          http://jogamp.org/deployment/webstart/jogl.all.jar, 
          http://jogamp.org/deployment/webstart/gluegen-rt.jar, 
          http://jogamp.org/deployment/webstart/newt.all.jar"> 
   <param name="codebase_lookup" value="true"> 
   <param name="subapplet.classname" value="de.beuthhochschule.bachelor.martin.Benchmark"> 
   <param name="subapplet.displayname" value="WebGL-Benchmark"> 
   <param name="noddraw.check" value="true"> 
   <param name="progressbar" value="true"> 
   <param name="jnlpNumExtensions" value="1"> 
   <param name="jnlpExtension1" value="http://jogamp.org/deployment/webstart/jogl-core.jnlp"> 
   <param name="java_arguments" value="-Dsun.java2d.noddraw=true -Dsun.java2d.opengl=false"> 
   <param name="jnlp_href" value="http://localhost/applet-benchmark.jnlp"> 
</applet> 

Полный лог консоли: http://pastebin.com/xjk84pTV (журнал частично переведена на немецкий, не знаю, как я могу изменить, что ...)

обновление

Обеспечение основных библиотек JOGL по себе ничего не меняет ...

<resources> 
    <j2se href="http://java.sun.com/products/autodl/j2se" version="1.6+"/> 
    <property name="sun.java2d.noddraw" value="true"/> 
    <jar href="http://192.168.0.39/jogl.all.jar" /> 
    <jar href="http://192.168.0.39/newt.all.jar" /> 
    <jar href="http://192.168.0.39/nativewindow.all.jar" /> 
    <jar href="http://192.168.0.39/gluegen-rt.jar" /> 
    <jar href="http://192.168.0.39/benchmark.jar" main="true"/> 
    <extension name="newt-all-awt" href="http://jogamp.org/deployment/webstart/newt-all-awt.jnlp" /> 
</resources> 

Я также попытался загрузки апплета этот путь, но ничего не изменилось ...

<script src="http://www.java.com/js/deployJava.js"></script> 
<script type="text/javascript"> 
    var attributes = { 
     code:'de.beuthhochschule.bachelor.martin.Benchmark', 
     width:660, height:500 
    }; 
    var parameters = {jnlp_href: "applet-benchmark.jnlp"}; 
    var version = "1.6"; 
</script> 
<script type="text/javascript"> 
    deployJava.runApplet(attributes, parameters, version); 
</script> 
+0

Включить полная трассировка в консоли Java, чтобы вы могли что происходит во время загрузки. Скорее всего, это нарушенная зависимость. –

+0

Pastebin журнала: http://pastebin.com/xjk84pTV Все, что я вижу, выглядит хорошо, но я абсолютно не знаком с этим ... – WarrenFaith

+0

Когда я добавляю свои библиотеки в '', я получаю еще одно неудовлетворенное исключение ссылки – WarrenFaith

ответ

1

Я нашел причину: причиной было испорченное использование библиотек. Библиотеки, которые я использовал, были предоставлены другим проектом, и кажется, что они старше текущей версии. Это означает, что библиотеки, загружаемые апплетом, используют другой API, который приводит к исключению.

Вот мое "решение":

Java код:

GLProfile glp = GLProfile.get(GLProfile.GL2ES2); 
GLCapabilitiesImmutable caps = new GLCapabilities(glp); 
glCanvas = new GLCanvas(caps); 

Вызов апплет в HTML:

<script type="text/javascript"> 
    var attributes = { 
     code:'de.beuthhochschule.bachelor.martin.Benchmark', 
     width:660, height:500 
    }; 
    var parameters = {jnlp_href: "applet-benchmark.jnlp"}; 
    var version = "1.6"; 
</script> 
<script type="text/javascript"> 
    deployJava.runApplet(attributes, parameters, version); 
</script> 

И, наконец, мой JNLP:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp href="applet-benchmark.jnlp"> 
    <information> 
     <title>WebGL-Benchmark</title> 
     <vendor>Martin Breuer</vendor> 
     <homepage href="http://192.168.0.39/" /> 
     <description>Native reference implementation</description> 
     <description kind="short">Reference implementation of the WebGL Benchmark</description> 
     <offline-allowed /> 
    </information> 

    <resources> 
     <j2se href="http://java.sun.com/products/autodl/j2se" version="1.4+" /> 
     <property name="sun.java2d.noddraw" value="true" /> 
     <jar href="http://192.168.0.39/benchmark.jar" main="true" /> 
     <extension name="newt-all-awt" href="http://jogamp.org/deployment/webstart/newt-all-awt.jnlp" /> 
    </resources> 
    <applet-desc 
     name="WebGL-Benchmark" 
     main-class="de.beuthhochschule.bachelor.martin.Benchmark" 
     width="660" 
     height="500"> 
    </applet-desc> 
</jnlp> 
2

Быстрая вещь, чтобы проверить, является версия JRE, которую вы используете в Eclipse, такая же, как версия JRE, запущенная в вашем браузере?

+0

это не изменилось, но это не помогает. Я добавил полный журнал консоли в конце вопроса. – WarrenFaith