Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用服务器启动java小程序时失败";不兼容的魔法值1013478509“;_Java_Applet_Servlet 3.0 - Fatal编程技术网

使用服务器启动java小程序时失败";不兼容的魔法值1013478509“;

使用服务器启动java小程序时失败";不兼容的魔法值1013478509“;,java,applet,servlet-3.0,Java,Applet,Servlet 3.0,我的小程序有问题。我有一个学校项目,我要做一个乒乓球在线游戏。它离线运行良好,但当我尝试从服务器加载它时,我只得到一个带有红色文本的空框。当我单击文本时,我会收到以下消息: 不兼容的魔法值1013478509 我使用的是jetty-all-8.1.8.v201106.jar和servlet-api-3.0.jar 启动服务器的类如下所示: public class TheServer extends HttpServlet { private static final long seri

我的小程序有问题。我有一个学校项目,我要做一个乒乓球在线游戏。它离线运行良好,但当我尝试从服务器加载它时,我只得到一个带有红色文本的空框。当我单击文本时,我会收到以下消息:

不兼容的魔法值1013478509

我使用的是jetty-all-8.1.8.v201106.jar和servlet-api-3.0.jar

启动服务器的类如下所示:

public class TheServer extends HttpServlet {
    private static final long serialVersionUID = 1L; 
    private Scanner sc;
    private String webSite;
    private PrintWriter out;


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html; charset=UTF-8");
        resp.setStatus(HttpServletResponse.SC_OK);
        out = resp.getWriter();

        sc = new Scanner(new File("F:\\Users\\Johan\\Workspace Kurs 5\\PongOnline\\bin\\pong.html"));
        webSite = "";
        while(sc.hasNext())
            webSite += sc.nextLine();
        sc.close();

        out.println(webSite);
        System.out.println(webSite);
    }

    public static void main(String...args) throws Exception {
        ServletContextHandler context = new ServletContextHandler( ServletContextHandler.SESSIONS);
        context.addServlet(TheServer.class, "/");

        Server server = new Server(666);
        server.setHandler(context);
        server.start();
        server.join();
    }
}

这意味着您有一个扩展名为
.class
的文件,它不是类。所有课程都必须以幻数
0xCAFEBABE

“类”的前四个字节读取

印刷品

<htm
根据,适当的
.class
文件以幻数开头:

魔法项提供标识类文件的魔法编号 格式;它的值为0xCAFEBABE


如果使用十六进制编辑器打开任何编译的
.class
文件并检查其第一个字节,则它们应该是
0xCAFEBABE
1013478509
转换为
有效Java类的神奇值是
0xCAFEBABE
3405691582
)的十六进制值,它是前4个字节。但是您得到的是
0x3C68746D
(十六进制值
1013478509
),这反过来代表ASCII字符
+1,因为它可能是来自服务器的HTML错误文档。感谢您在这条荒谬、神秘的消息背后的解释。我很想知道为什么《非班级档案》被否决了。在我们的例子中,我们从页面对jar发出了一个很好的请求,但是apache重写规则是不正确的。因此,当我们询问x.jar时,服务器将x.jar放在正确的位置,重写规则试图将y.jar返回到页面。我注意到,您有6个问题,都有答案,但没有一个!请更正。嗨@AndrewThompson,非常抱歉,我已经离开stackoverflow一段时间了。刚刚解决了这个问题。谢谢你提醒我!
<htm
int magic = 1013478509;
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(magic);
System.out.println(new String(b.array()));