如何调试 Java Applet?

2024-07-03

目前,我所掌握的唯一信息是浏览器状态栏中的一行错误消息。

例如,你知道我如何获得堆栈跟踪吗?


除了明显使用 Java 控制台和小程序查看器之外,从 Java 6 update 7 开始,您还可以使用VisualVM http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.htmlJDK 附带的 (JDK_HOME/bin/visualvm)。它允许您查看每个线程的堆栈跟踪,甚至查看所有对象实例。

AppletViewer 非常方便,您可以从 Eclipse 中执行“Run as / Java Applet”来运行,或者“Debug As / Java Applet”来调试您的 applet 类。

然而,有时为了调试一些安全相关的东西,浏览器插件环境与 appletviewer 太不同了。您可以执行以下操作来有效地调试浏览器中的小程序:

1) 获取二进制文件的调试信息

从 JRE_HOME/lib 备份 .jar 文件

(下载并)安装与 JRE 版本相同的 JDK。

将 .jar 文件从 JDK_HOME/jre/lib 复制到 JRE_HOME/lib

JDK 内的文件是用包含的调试信息(源代码行号信息、变量名称等)编译的,而 JRE 文件没有此信息。

如果没有这个,您将无法有意义地进入调试器中的核心类代码。

2) 启用Java插件调试

转至 Java 控制面板/ 爪哇/ Java 运行时设置 / 看法 / 用户/ 运行时参数

并添加启用调试的选项。像这样的事情:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n

有趣的选项是 端口(这里使用 2502,您几乎可以使用任何空闲端口,只需将其写下来以供稍后使用)和挂起 - 如果您需要调试小程序启动、类加载等,请将其设置为“y”。这样,当您访问 applet 页面时,浏览器将显示为冻结,因为 JVM 立即挂起,等待调试器连接。

3) 使用您最喜欢的 IDE 远程调试 Java 插件

例如,在 Eclipse 中,选择 Run / Debug Configurations ... / Remote Java Application

单击“新建”按钮。

确保连接类型为“Socket Attach”,如果您的浏览器是本地浏览器,则选择 localhost 作为主机,并选择您之前选择的端口(示例中为 2502)。

您可能必须在 JDK 的“源”选项卡上包含 src.zip 才能获得可用的 Java 核心类源。

保存配置,一旦您的浏览器运行插件(无论是否暂停 JVM),就运行远程调试器以连接到插件 JVM,并打开包含小程序源代码的项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调试 Java Applet? 的相关文章

  • Swing JEditorPane CSS 功能

    我正在 Swing JEditorPane 中显示 HTML 内容 为了更改 HTML 的默认外观 我使用了 CSS 样式表 这很好用 我的问题只是 JEditorPane 不支持完整的 CSS 规范 是否有 JEditorPane 支持的
  • Java Appengine APPSTATS 导致 java 内存不足错误

    我的 java appengine 应用程序中有几个 servlet 它们在内存中进行排序 并需要几秒钟的时间才能完成 这些完全没有错误 但是 我最近为 appengine 启用了 appstats 并开始收到以下错误 java lang
  • 在 ant 中定义 Main-Class 来捆绑 jar 的混乱

    我正在尝试使用 Amazon Mechanical Turk API 构建一个 jar 文件 SDK 附带了一个 helloworld 文件 我试图将其打包作为健全性检查 它位于此处 http aws amazon com code SDK
  • Chrome 开发者工具:缺少“脚本”选项卡

    Web 浏览器 chrome 版本 21 0 1180 82 和版本 23 0 1244 0 canary 操作系统 mac osx 10 8 它应该是什么样子 在我看来 选项卡导航器中的 脚本 选项卡被 源 图标替换 这给我带来了问题 因
  • 如何将 XML 文件直接写入 zip 存档?

    在不使用第 3 方库的情况下 使用 JAXB 直接将 XML 文件列表写入 zip 存档的正确方法是什么 将所有 XML 文件写入一个目录然后压缩会更好吗 正如其他人指出的那样 您可以使用ZipOutputStream类来创建 ZIP 文件
  • 如何安装Slick2d?

    您好 我正在尝试使用 LWJGL 库和 Slick2D 游戏库创建一个游戏 但是当我尝试运行它时出现错误 这是我的代码 package test import org newdawn slick AppGameContainer impor
  • Glassfish 使用内部模块库而不是应用程序库

    我正在尝试在 Glassfish 4 1 21 上部署 Spring boot 应用程序 在启动时 我收到一条错误 指出由于方法不存在而无法创建entityManagerFactory 它不存在 因为由于某种原因 当应用程序在 glassf
  • JavaFX 在拖放完成后获取拖放目标文件夹

    Java Oracle 社区的问题 https community oracle com thread 3934986 https community oracle com thread 3934986 问题 我已经设置了下面的代码Butt
  • Java 8 模块与 OSGi 有何不同?

    Java 8 和 Jigsaw 项目为 SDK 带来了模块系统 我认为这是一件好事 因为它是软件包的一部分 内置 OSGi 还提供了一个模块系统 但需要一个容器 但除此之外 它们之间的主要区别是什么 如果我使用 OSGi 我是否能够使用标准
  • Google Play 游戏服务 - 自定义通知/欢迎回来

    我一直在互联网上查找 但找不到我的答案 有没有办法向用户显示他们已登录 GPGS 第一次登录时 您会收到一条通知 内容为 欢迎 但是当您下次打开应用程序时 什么也没有显示 有没有办法显示欢迎回来通知 对于 iOS 这是可能的 在第 9 步上
  • 如何在javafx中嵌入PApplet?

    所以我让我的处理代码在java中运行 但现在我想将它嵌入到我的 GUI 的 JavaFX 中 我怎样才能这样做呢 我尝试使用以下代码 但它似乎不起作用 package testprocessing import javafx applica
  • JOGL/OpenGL VBO - 如何渲染顶点?

    3我有以下SceneRenderer类 实现GLEventListener 我想我了解创建缓冲区 存储指向这些缓冲区的指针以及用数据填充这些缓冲区的过程 请参阅 init 方法 我奋斗的地方是展示 方法 我几乎尝试了在互联网上找到的所有内容
  • “?” 是什么意思?在Java中是什么意思? [复制]

    这个问题在这里已经有答案了 我不知道问号是什么 在java中代表 我正在做一个小程序 一个Nim游戏 正在寻找一本书寻求帮助 并看到这样的说法 int pinsToTake min gt 2 2 1 看不懂 什么会 代表 它可能与 if 语
  • Jenkins 中的算法协商失败 SSH

    我正在尝试从 Jenkins ssh 到本地服务器 但抛出以下错误 SSH Exception Algorithm negotiation fail com jcraft jsch JSchException Algorithm negot
  • 匿名类是内部类的子集吗?

    这听起来可能是一个愚蠢的问题 但所有匿名类都必须在现有类中定义和实例化 因此 它们必须同时是内部类 匿名类是内部类的类型 看http docs oracle com javase tutorial java javaOO innerclas
  • 优化xstream的加载速度

    当我尝试从 XML 文件执行加载时 我感觉 xstream 加载速度达不到我的要求 为了 一个有 10k 条目的 数据库 需要几分钟 以下是我用来序列化的整个数据结构 列表的大小 符号和代码 将为 大约 10k 条目 有什么方法我可以尝试
  • 如何使用 xstream 将 Hashmap 映射到 XML 中的键值属性

    我有以下实体 XStreamAlias entity public class MapTestEntity XStreamAsAttribute public Map
  • 使用 Apache CXF 2.4 JAX-RS 和 Spring Security 3.2 获取用户名

    我在 JAX RS 资源中获取用户名SecurityContextHolder这有效 Path myresource public class MyResoure Get public String getUserName return S
  • 如何限制匿名子类的创建(Java)

    抱歉 我之前没有正确表述这个问题 我尝试实现工厂模式 一个更好的例子 它是一个带有 create 函数的抽象类 Human 根据创建时传递的参数 它决定是返回其子类 Man 的实例还是返回 Woman 子类的实例 因此 您可以使用以下命令调
  • 使用部署在 Tomcat 中的 Web 应用程序关闭 Tomcat

    我对我的 webapp 开发中遇到的 tomcat 操作有一些疑问 有什么办法可以从部署在tomcat中的web应用程序中关闭tomcat本身吗 tomcat 是否在一个 JVM 或单个 JVM 中运行其所有 webapps war 或者在

随机推荐