gpt4 book ai didi

java - getRuntime() 结果取决于 Netbeans 版本

转载 作者:行者123 更新时间:2023-11-30 10:00:43 33 4
gpt4 key购买 nike

我正在使用一些代码行来检查特定软件程序是否正在我的计算机上运行,​​方法是检查我计算机上正在运行的进程。完整代码为:

public static void main(String[] args) {
try {
String line;
Process p = Runtime.getRuntime().exec("ps -x");
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
if(line.contains("/xyz/")) System.out.println("Found it!");
}
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
System.exit(0);
}

当使用 Netbeans 8.2 运行这些行时,我得到一长串正在运行的进程(总共大约 90 个进程)。并且找到了我正在寻找的过程。然后当我使用 Netbeans 11.1 运行相同的代码时,我只得到几个进程(只有 6 个进程)并且找不到我正在寻找的进程。我电脑的操作系统是 Ubuntu。 Netbeans 8.2 和 11.1 都是默认安装的,我没有做任何修改。两次运行都是在计算机上以同一用户身份完成的。

为什么 Netbeans 8.2 和 11.1 之间的行为存在差异?我该怎么做才能让 Netbeans 11.1 在我的计算机上获取所有正在运行的进程?

编辑 1:根据评论中的建议,我验证了从 Netbeans 内部和命令行运行该程序。Netbeans 8.2 和 11.1 都指示运行相同的命令行:

java -jar "/home/joe/NetBeansProjects/Sandbox/dist/Sandbox.jar"

此结果与我在 Netbeans 8.2 中运行该程序时得到的结果相同。我从 Netbeans 11.1 获得的结果与所有其他结果有偏差(我得到的输出少得多)。

编辑 3:这是从我在 Netbeans 11.1 中的程序或从 GNOME 终端运行 ps -x 的结果。这是两天后做的,运行进程数与我发原题时略有不同。

Netbeans 11.1 中 ps -x 的结果:

  PID TTY      STAT   TIME COMMAND
1 tty2 S+ 0:00 /usr/libexec/flatpak-bwrap --args 34 netbeans-desktop
190 tty2 Sl+ 1:41 /app/jdk/bin/java <long command string>
367 tty2 R+ 0:00 ps -x

(找到 3 个进程)

GNOME 终端中 ps -x 的结果(注意命令被截断)

  PID TTY      STAT   TIME COMMAND
2075 ? Ss 0:00 /lib/systemd/systemd --user
2076 ? S 0:00 (sd-pam)
2092 ? Sl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
2096 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SH
2102 ? Ss 0:00 /usr/bin/dbus-daemon --session --address=systemd: --n
2109 tty2 Sl+ 0:00 /usr/lib/gnome-session/gnome-session-binary --session
2209 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL
2211 ? Ssl 0:00 /usr/lib/at-spi2-core/at-spi-bus-launcher
2216 ? S 0:00 /usr/bin/dbus-daemon --config-file=/usr/share/default
2218 ? Sl 0:00 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-s
2232 ? Ssl 0:00 /usr/lib/gvfs/gvfsd
2237 ? Sl 0:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o bi
2255 tty2 Sl+ 0:27 /usr/bin/gnome-shell
2265 ? S<l 0:00 /usr/bin/pulseaudio --start --log-target=syslog
2269 ? S 0:00 /usr/lib/x86_64-linux-gnu/pulse/gconf-helper
2271 ? S 0:00 /usr/lib/x86_64-linux-gnu/gconf/gconfd-2
2281 tty2 Sl 0:00 ibus-daemon --xim --panel disable
2285 tty2 Sl 0:00 /usr/lib/ibus/ibus-dconf
2289 tty2 Sl 0:00 /usr/lib/ibus/ibus-x11 --kill-daemon
2292 ? Sl 0:00 /usr/lib/ibus/ibus-portal
2297 ? Ssl 0:00 /usr/lib/xdg-desktop-portal/xdg-permission-store
2304 ? Sl 0:00 /usr/lib/gnome-shell/gnome-shell-calendar-server
2308 ? Ssl 0:00 /usr/lib/evolution/evolution-source-registry
2316 ? SLl 0:00 /usr/lib/gnome-online-accounts/goa-daemon
2330 ? Sl 0:00 /usr/lib/gnome-online-accounts/goa-identity-service
2335 ? Ssl 0:00 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
2342 ? Ssl 0:00 /usr/lib/gvfs/gvfs-afc-volume-monitor
2347 ? Ssl 0:00 /usr/lib/gvfs/gvfs-mtp-volume-monitor
2351 ? Ssl 0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
2355 ? Ssl 0:00 /usr/lib/gvfs/gvfs-goa-volume-monitor
2365 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-power
2366 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-print-notification
2369 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-rfkill
2372 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-screensaver-proxy
2374 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-sharing
2382 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-sound
2385 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-xsettings
2389 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-wacom
2390 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-smartcard
2395 tty2 Sl+ 0:02 /usr/bin/gjs /home/joe/.local/share/gnome-shell/ex
2396 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-a11y-settings
2400 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-color
2404 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-clipboard
2408 ? Sl 0:00 /usr/lib/dconf/dconf-service
2409 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-housekeeping
2412 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-datetime
2416 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-media-keys
2421 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-keyboard
2436 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-mouse
2467 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-printer
2472 tty2 Sl+ 0:00 /usr/lib/gnome-disk-utility/gsd-disk-utility-notify
2483 tty2 Sl+ 0:02 nautilus-desktop
2484 tty2 Sl+ 0:00 /usr/lib/x86_64-linux-gnu/indicator-messages/indicato
2489 tty2 Sl+ 0:00 python3 /usr/lib/gnome-tweak-tool/gnome-tweak-tool-li
2528 ? Sl 0:00 /usr/lib/gvfs/gvfsd-trash --spawner :1.22 /org/gtk/gv
2535 ? Ssl 0:08 /home/joe/.dropbox-dist/dropbox-lnx.x86_64-80.4.12
2537 ? Ssl 0:00 /usr/lib/evolution/evolution-calendar-factory
2561 ? Sl 0:00 /usr/lib/evolution/evolution-calendar-factory-subproc
2567 tty2 Sl 0:00 /usr/lib/ibus/ibus-engine-simple
2575 ? Ssl 0:00 /usr/lib/evolution/evolution-addressbook-factory
2592 ? Sl 0:00 /usr/lib/evolution/evolution-addressbook-factory-subp
2851 ? Ssl 0:00 /usr/lib/gvfs/gvfsd-metadata
3054 tty2 Sl+ 0:00 telepathy-indicator
3060 ? Ssl 0:00 /usr/lib/telepathy/mission-control-5
3078 tty2 Sl+ 0:00 zeitgeist-datahub
3089 ? Ssl 0:00 /usr/bin/zeitgeist-daemon
3096 ? Ssl 0:00 /usr/lib/zeitgeist/zeitgeist/zeitgeist-fts
3137 tty2 Sl 0:00 python3 /usr/share/ibus-anthy/engine/main.py --ibus
3216 tty2 SLl+ 0:03 /usr/bin/gnome-software --gapplication-service
3398 tty2 Sl+ 0:08 /usr/lib/thunderbird/thunderbird
3532 tty2 S+ 0:00 /usr/libexec/flatpak-bwrap --args 34 netbeans-desktop
3537 ? Ssl 0:00 /usr/libexec/flatpak-session-helper
3542 ? Ssl 0:00 /usr/lib/xdg-desktop-portal/xdg-document-portal
3552 tty2 S+ 0:00 /usr/libexec/flatpak-bwrap --args 34 /usr/libexec/fla
3553 tty2 Sl+ 0:00 /usr/libexec/flatpak-dbus-proxy --args=36
3555 tty2 S+ 0:00 /usr/libexec/flatpak-bwrap --args 34 netbeans-desktop
3556 tty2 S+ 0:00 /bin/bash /app/netbeans/platform/lib/nbexec --userdir
3745 tty2 Sl+ 1:48 /app/jdk/bin/java -Djdk.home=/app/jdk -classpath /app
4149 tty2 Sl+ 0:16 /usr/lib/firefox/firefox -new-window
4209 tty2 Sl+ 0:17 /usr/lib/firefox/firefox -contentproc -childID 1 -isF
4252 tty2 Sl+ 0:13 /usr/lib/firefox/firefox -contentproc -childID 2 -isF
4350 tty2 Sl+ 0:00 /usr/bin/python3 /usr/bin/chrome-gnome-shell /usr/lib
5226 tty2 Sl+ 0:00 /usr/lib/firefox/firefox -contentproc -childID 4 -isF
5513 tty2 Sl+ 0:00 gedit /home/joe/Desktop/Empty Document
5700 ? Ssl 0:00 /usr/lib/gnome-terminal/gnome-terminal-server
5709 pts/0 Ss 0:00 bash
5731 pts/0 R+ 0:00 ps -x

(找到 88 个进程)

我观察到的差异:(a) Netbeans 11.1 只显示与 tty2 相关的进程。(b) Netbeans 11.1 不显示属于 tty2 的所有进程,只显示一个子集。(c) Netbeans 11.1 会不会只显示与自身相关的进程,而不显示计算机上运行的所有进程?

编辑 2:这是我在每个 Netbeans 版本中运行 Help > About 时得到的信息:

Product Version: NetBeans IDE 8.2 (Build 201705191307)
Updates: NetBeans IDE is updated to version NetBeans 8.2 Patch 2
Java: 1.8.0_131; Java HotSpot(TM) 64-Bit Server VM 25.131-b11
Runtime: Java(TM) SE Runtime Environment 1.8.0_131-b11
System: Linux version 5.0.0-27-generic running on amd64; UTF-8; en_US (nb)
User directory: /home/joe/.netbeans/8.2
Cache directory: /home/joe/.cache/netbeans/8.2
Product Version: Apache NetBeans IDE 11.1
Java: 11.0.4; OpenJDK 64-Bit Server VM 11.0.4+11
Runtime: OpenJDK Runtime Environment 11.0.4+11
System: Linux version 5.0.0-27-generic running on amd64; UTF-8; en_US (nb)
User directory: /home/joe/.netbeans/11.1
Cache directory: /home/joe/.cache/netbeans/11.1

我注意到 Java 版本不同。我不知道这是否会导致 Runtime.getRuntime().exec() 命令产生不同的结果。

最佳答案

这不是解决方案,而是对不适合评论的更多信息的请求。

[1] 使用 NetBeans 8.2 和 NetBeans 11.1 的帮助 > 关于 窗口的输出更新您的问题。例如,在我的机器上,这是我为 NetBeans 11.1 得到的:

Product Version: Apache NetBeans IDE 11.1
Java: 11.0.2; OpenJDK 64-Bit Server VM 11.0.2+9
Runtime: OpenJDK Runtime Environment 11.0.2+9
System: Windows 10 version 10.0 running on amd64; Cp1252; en_US (nb)
User directory: C:\Users\johndoe\AppData\Roaming\NetBeans\11.1
Cache directory: C:\Users\johndoe\AppData\Local\NetBeans\Cache\11.1

[2] 构建您的应用程序,并将输出 窗口中显示的命令复制到剪贴板,指定如何从命令行运行它。它看起来类似于:

To run this application from the command line without Ant, try:

C:\Java\openJDK\jdk-12.0.2/bin/java -cp D:\NB111\FormatProperties\dist\FormatProperties.jar formatproperties.FormatProperties

将该命令粘贴到终端 窗口并运行它,用于两个构建(NetBeans 8.2 和 NetBeans 11.1)。会发生什么?

[3] 使用在 NetBeans 11.1 和终端窗口中运行应用程序时生成的 ps -x 输出更新您的问题。

您的问题可能有以下三种原因:

  • 您与 NetBeans 11.1 一起使用的 Java 版本。显然,如果您在两个 NetBeans 安装中使用相同版本,则这无关紧要。
  • NetBeans 11.1 本身。
  • 与您安装 NetBeans 11.1 相关的一些环境问题。

上述三个步骤将有助于隔离问题。


更新:

根据 OP 关于多个 Java 安装的反馈,接下来要尝试的是在 NetBeans 11.1 中使用 Java 1.8 构建和运行应用程序。这是一个两步过程:

  1. 将 Java 1.8 作为 Java 平台添加到 NetBeans 11.1(如有必要)。
  2. 重建应用程序并使用 Java 1.8 运行它。

要在 NetBeans 11.1 中执行此操作:

  • 选择工具 > Java 平台,然后点击添加平台...按钮(如果 Java 1.8 还不是一个平台)。
  • 选择平台类型 Java Standard Edition 并单击Next >
  • 选择平台文件夹 屏幕上,导航到 java 1.8 安装的根目录。在我的例子中是 C:\Java\jdk1.8.0_221 但显然你的路径会有所不同。
  • 完成将 Java 1.8 添加为 Java 平台的向导,然后单击关闭按钮关闭Java 平台管理器窗口。
  • 项目 Pane 中选择您的项目,右键单击并从上下文菜单中选择属性
  • Source > Source Binary Format 设置为 JDK 8
  • Libraries > Java Platform 设置为 Java 1.8(或您之前为 Java 1.8 选择的任何平台名称),然后单击确定关闭项目属性窗口。
  • 选择您的项目,右键单击并选择清理并构建以使用 Java 1.8 重建它。
  • 选择您的项目,右键单击并选择运行,以使用 Java 1.8 在 NetBeans 11.1 中运行您的应用程序。使用 Java 11 有什么变化吗?

关于java - getRuntime() 结果取决于 Netbeans 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57843368/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com