2014-06-13 46 views
0

我试图在浏览器中运行applet时遇到问题。我得到一个NullPointerException,我无法确定它出错了。开放式移位Java Applet

这里是堆栈跟踪:

Java Plug-in 10.60.2.19 
Using JRE version 1.7.0_60-b19 Java HotSpot(TM) Client VM 
User home directory = C:\Users\Alexandru 
---------------------------------------------------- 
c: clear console window 
f: finalize objects on finalization queue 
g: garbage collect 
h: display this help message 
l: dump classloader list 
m: print memory usage 
o: trigger logging 
q: hide console 
r: reload policy configuration 
s: dump system and deployment properties 
t: dump thread list 
v: dump thread stack 
x: clear classloader cache 
0-5: set trace level to <n> 
---------------------------------------------------- 
java.lang.NullPointerException 
    at sun.awt.SunToolkit.getSystemEventQueueImplPP(Unknown Source) 
    at sun.awt.SunToolkit.getSystemEventQueueImplPP(Unknown Source) 
    at sun.awt.SunToolkit.getSystemEventQueueImpl(Unknown Source) 
    at java.awt.Toolkit.getEventQueue(Unknown Source) 
    at java.awt.EventQueue.invokeLater(Unknown Source) 
    at sun.awt.windows.WToolkit.windowsSettingChange(Unknown Source) 
    at sun.awt.windows.WToolkit.eventLoop(Native Method) 
    at sun.awt.windows.WToolkit.run(Unknown Source) 

我得到这个后,我得到一个Quiz.class ClassNotFound的。

这里是我的代码:

<jsp:plugin type="applet" code="Quiz.class" codebase="../target/classes" width="500" height="280"> 
    <jsp:fallback> 
    <p> Unable to load applet </p> 
    </jsp:fallback> 
</jsp:plugin> 

我试图运行OpenShift云服务的应用程序。我的服务器使用JBoss运行,它应该创建一个测验并将其显示在applet中。我已经创建了测验,并且可以通过jsp将其显示在浏览器中,但现在由于安全问题,现在我试图在applet中显示它。

这里是我的applet代码(这个小程序是仅用于测试,我应设法以显示它的测验后,我解决了这个问题):

package models; 

import java.applet.Applet; 
import java.awt.Graphics; 

public class Quiz extends Applet{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public void paint(Graphics g) 
    { 
      g.drawString("My applet",400,200); 
    } 
} 

我的项目是基于Maven的,我想这很重要。我尝试从我的applet中将编译后的类添加到jar中,并在运行时使用Maven插件将其添加到webapp文件夹中,使用此示例Maven - Copy Some Dependency JARs into warSourceDirectory但它没有帮助。我也试图直接使用这个插件编译类WebApp文件夹:

<pluginRepositories> 
     <pluginRepository> 
      <id>eap</id> 
      <url>http://maven.repository.redhat.com/techpreview/all</url> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 

与此配置文件:

<profile> 
      <id>copy</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>com.github.goldin</groupId> 
         <artifactId>copy-maven-plugin</artifactId> 
         <version>0.2.5</version> 
         <executions> 
          <execution> 
           <id>create-archive</id> 
           <phase>generate-resources</phase> 
           <goals> 
            <goal>copy</goal> 
           </goals> 
           <configuration> 
            <resources> 
             <resource> 
              <targetPath>${project.build.outputDirectory}/work/webapp/WEB-INF/classes/</targetPath> 
              <directory>${project.basedir}/src/main/webapp</directory> 
             </resource> 
            </resources> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 

,但它也不能工作。还有其他建议吗?

+0

代码库是一个HTTP路径,与Maven目录布局无关。 – chrylis

回答

0

您可能需要将Quiz.class文件放入您的webroot目录(通过您的jsp文件),以便jsp代码可以找到它,否则我不认为../target/classes会暴露给浏览器在网络上,因为这似乎是一个安全问题?

+0

非常感谢你的想法,但我不认为我可以做到这一点。我已经尝试将它们放在同一个文件夹中,但在我的项目中我有这样的结构:在src下我主要有3个其他子文件夹:java,resources和webapp。我只能将java文件放在java文件夹和webapp文件夹中的jsp文件中。据我可以在我的git文件夹中看到,java文件被编译到target/classes文件夹中。我不知道问题在哪里......虽然,非常感谢你的这个想法 – user3738906