当前位置: 首页 > 面试题库 >

如何在运行时调试jar?

姬和豫
2023-03-14
问题内容

我处于一个非常奇怪的位置(从我的java-newbie的角度来看):

  1. 我使用Eclipse编写了一个“ java程序”(一些带有类的.java文件),从本质上(分批)读取文本 .csv文件,“求值”其内容,并将结果写到 _out.csv文本文件中。要找到输入文件,它使用“文件选择器”(从此处获取示例:http : //docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html)

  2. 我调试所有的代码,并使用调试器, 它的工作原理

  3. 我跑的代码(主类,它调用所有其他的序列)和 它的作品而在Eclipse中

  4. 我将项目的所有内容导出到“可运行的jar”文件中。

请注意,除了文件选择器之外,这主要是一个读写的“批处理”:几乎没有用户界面。在进入Eclipse时,我使用诸如
if(debug)System.out.print(“ something to print”);之 类的文件显示了一些内部结果,该文件在调试时设置为
debug ,在生产环境中设置为FALSE。

以上所有 工作!

现在,启动可运行的jar(在Win / XP中双击jar文件), 我可以看到 文件选择器并且可以使用它,但是在选择了输入文件之后…… 仅此而已
:(没有用户界面)我不知道是否已读取文件,看不到任何生成的输出文件,甚至没有“控制台”来列出任何中间调试消息,以查看jar是否正常工作,即使我重新-
将调试变量设置为TRUE导出它。

有没有一种方法可以“运行时调试”正在运行的jar(例如VB的MsgBox或其他)?我可以“启用”或查看某种“日志文件”?(很明显,由于我的jar不在写结果文件,所以我也不能尝试编写
.log)我也不得不说除了在我的机器上
不能 安装Eclipse以外,我 还不能*
安装其他东西(幸运的是它能够运行),因此没有通常的开发人员的工具,实用程序和其他有用的东西。


问题答案:

即使它是可运行的jar,您仍然可以从控制台运行它-打开终端窗口,导航到包含jar的目录,然后输入“ java -jar
yourJar.jar”。它将在该终端窗口中运行,并且sysout和syserr输出将出现在该窗口中,包括未捕获异常的堆栈跟踪。编译时,请确保将调试设置为true。还有祝你好运。

只是想到了别的东西-如果您使用的是Win7,则用户应用程序将文件写入特定目录时通常会出现权限问题。确保将输出文件写入的目录是您拥有权限的目录。

在将来的项目中,如果足够大,则可以使用标准的日志记录工具之一来进行“调试”输出。那么很容易将其重定向到文件,而不是依赖于具有控制台。但是对于像这样的较小的工作,应该没问题。



 类似资料:
  • 我通过Jasmine、Karma和各种浏览器进行测试。我目前正在调试一个只在PhantomJS中失败的测试。 我想调试这个调用,所以我在karma中设置了一个自定义的PhantomJS启动器,在调试端口打开的情况下运行它。 我可以通过该端口访问Chrome中的远程调试器,但是,它似乎对我的任何测试文件一无所知。它报告一个“关于:空白”和一个“localhost:9876”(Phantom正在访问的

  • 问题内容: 谁能告诉我如何对共享库进行运行时调试? 我需要在运行时调试共享库中的一个函数,但另一个程序会调用它。如何使用共享库执行类似dbx的操作? 我在AIX上使用dbx。我想做的是gdb比dbx好吗? 问题答案: 您只需要使用可执行文件调用gdb(无论是您的文件还是第三方文件都没有关系)。这是一个示例,其中我调试 ls 命令并在(共享) c库中 设置断点。此示例使用了gdb 6.8,它支持延迟

  • 我在一个Java程序(在本例中是Optaplanner的变体)中有一个Drools文件,它是在NetBeans8上构建的。当我运行程序时,我会得到一条错误消息: 在Googles错误mesage之后,是从Optaplanner抛出的类路径资源。 我的问题是,由于没有关于错误在drools文件中的位置的进一步信息,调试这段代码的好方法是什么?有没有任何插件可以帮助我缩小问题的范围,就像Netbean

  • 问题内容: 我如何启用Notch 在Eclipse的此视频中谈论的“运行时调试”功能? 作为测试,我希望能够在运行时编辑以下代码的输出并将其更改为“ Hello Runtime Debugging”。 编辑: 我修改了代码,现在我得到了想要的结果。Suraj Chandran在下面的回答对此进行了解释。 问题答案: Eclipse开箱即用地支持调试期间的热交换代码。 在调试时,只需更改任何代码并保

  • 已经试着调试了4天了。我有一个ASP.NET Core2Web应用程序,我试图在Redhat Linux7.1Systemd中运行。dll在手动运行时工作正常,但在尝试通过SystemD运行时失败。 systemctl的输出 web.service-WebServiceLayer loaded:loaded(/etc/systemd/user/web.service;已启用;供应商预置:>已禁用)

  • 问题内容: 我最近从log4j切换到logback,想知道是否有一种简单的方法可以在调试模式下运行logback,类似于log4j的属性。我需要看看它在哪里接我。 该文档提到使用a 打印出回传的内部状态,但这需要更改代码。 问题答案: [编辑] 此问题已在Logback 1.0.4中修复。现在,您可以用来启用回退设置的调试。 -旧答案- 不幸的是,无法通过System属性启用调试。你必须使用的。请