使用服务器 "incompatible magic value 1013478509"启动时 java 小程序失败

标签 java applet servlet-3.0

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

incompatible magic value 1013478509

我正在使用 jetty-all-8.1.8.v20121106.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();
    }
}

最佳答案

有效 Java 类的神奇值是 0xCAFEBABE (3405691582 的十六进制值),这是前 4 个字节。但是你得到 0x3C68746D (1013478509 的十六进制值)又代表 ASCII 字符 < , h , tm .要亲自查看,请运行这段代码:

int magic = 1013478509;
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(magic);
System.out.println(new String(b.array()));

这与网站提供的小程序相结合表明它是 <html> 的开始标记反过来表明它是一个 HTML 文档。

因此,对 applet 的 HTTP 请求显然实际上返回了一个 HTML 文档。将浏览器地址栏中的当前请求URI改为指向小程序的URL,你自己应该就能看到了。然后您将看到浏览器在尝试下载该小程序时实际上 检索到的内容。也许它是一个简单的 HTTP 404 错误文档,具有 HTML 页面的风格。

要修复它,只需确保 <applet> 中的 URL或 <object>标签是正确的。它与您在浏览器地址栏中看到的当前请求 URL 相关。您的 servlet 的工作方式很奇怪。您正在从部署文件夹外部流式传输 HTML 文件。这表明小程序也在部署文件夹之外,因此根本无法通过有效的 URL 访问。您应该将 HTML 页面和小程序都放在 Web 内容文件夹中。这样您就不再需要那个 servlet。

关于使用服务器 "incompatible magic value 1013478509"启动时 java 小程序失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13954714/

相关文章:

java - 如何实现通用分页

java - 为什么小程序的采用率如此之低?

java - 错误: Main method not found in class Example_Applet,

java - 将 map 或对象从 jsp 传递到 servlet

java - WebAppContext 将参数传递给 servlet 构造函数

java - NTLM 身份验证方案选择错误

java - Java 中时间派生属性的最佳实践

java - 使用 guice,如何配置 Jersey 的媒体类型映射?

java - 小程序不显示图像

SpringServletContainerInitializer 不能强制转换为 javax.servlet.ServletContainerInitializer