【问题标题】:How to determine which command Netbeans is executing to run the project?如何确定 Netbeans 正在执行哪个命令来运行项目?
【发布时间】:2025-12-27 18:55:17
【问题描述】:

我正在使用 Netbeans 和 Maven 开发 Java 应用程序。我正在努力将项目作为独立应用程序运行。从 Netbeans 启动项目一切正常,但运行可执行 jar 会产生错误(无法加载数据文件)。

我需要确切地知道 Netbeans 正在执行哪些命令来运行应用程序。但是,Netbeans 的输出窗口只显示了应用程序“返回”的内容。有没有办法找出/显示 Netbeans 用来运行项目的命令?

谢谢

编辑:运行 java 应用程序和加载文件不是这里的问题。我能够运行应用程序并且库正在正确加载。这里的问题是了解 Netbans 如何运行应用程序(通过查看执行的命令)。

【问题讨论】:

  • 您是否创建了一个包含所有数据的 jar,清单中使用 Maven 提供 Main 类? how to create single jar?.
  • 我做到了,在 Netbeans 之外运行 Maven 应用程序不是这里的问题。问题是我在尝试加载文件时遇到了一些错误。但是,当我从 Netbeans 运行应用程序时,我没有收到此错误。所以我需要弄清楚究竟 Netbeans 正在执行哪些命令来运行项目。
  • NetBeans 包括它在“输出”窗口中使用的 Maven 命令行。这是第一行。但是从命令行运行生成的 jar 文件将需要一个完全不同的命令,因为这通常不是通过 maven 完成的。通常这将类似于java -cp ..... your.main.Class 或(如果您提供清单)只是java -jar your.jar

标签: java maven netbeans


【解决方案1】:

Netbeans 将它调用的命令作为输出的第一行输出。

我使用的是 Netbeans 8.2,当我在 maven 项目中点击绿色的 Run 大按钮时,效果是这样的:

第一行读取(格式化以提高可读性):

cd D:\test;
"JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_112" 
"M2_HOME=C:\\Program Files\\apache-maven-3.3.3"
cmd /c "\"\"C:\\Program Files\\apache-maven-3.3.3\\bin\\mvn.cmd\"
    -Dexec.args=\"-classpath %classpath com.test.AppStarter\"
    -Dexec.executable=\"C:\\Program Files\\Java\\jdk1.8.0_112\\bin\\java.exe\"
    -Dexec.workingdir=D:\\test\\target\\dist
    -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.2\\java\\maven-nblib\\netbeans-eventspy.jar\"
    -Dfile.encoding=UTF-8
    org.codehaus.mojo:exec-maven-plugin:1.2.1:exec\""

从那行我可以看出 Netbeans

  • 进入项目目录
  • 设置环境变量(JAVA_HOMEM2_HOME
  • 然后执行cmd 执行mvn(通过其完整路径)
    • 带有一堆 -D 参数(指定工作目录和 AppStarter 作为要执行的类)
    • exec-maven- plugin 与目标exec

【讨论】:

    【解决方案2】:

    NetBeans 编译程序时,它会创建一个文件夹层次结构,其中包含已编译的 .class 文件。创建 JAR 存档时,ZIP 将这些文件放入存档中。执行程序(或调试)时,NetBeans 会从文件夹中运行 .class 文件,而不是在 JAR 文件中。

    这些可能会导致不同的问题,例如不同的 PATH。这可能会导致相对路径出现“找不到文件”错误。

    【讨论】:

      【解决方案3】:

      你的操作系统是什么?

      Windows: 那么 wmic 可能是工具,它可以向您显示完整的命令行。你会在这里找到例子command line of process by name

      Linux: 尝试 ps -ef | grep java

      【讨论】: