通过检查计算机上正在运行的进程,我使用了几行代码来检查特定的软件程序是否在我的计算机上运行。完整的代码是:
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的结果。这是在两天后完成的,运行进程的数量与我发布最初问题的时间略有不同。
ps -x在Netbeans 11.1中的结果:
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 >关于时获得的信息:
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.2Product 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()命令中出现不同的结果。
发布于 2019-09-10 15:40:33
这不是解决方案,而是要求提供更多不适合评论的信息。
1用Help > About窗口为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.12构建应用程序,并将显示在Output窗口中的命令复制到剪贴板,指定如何从命令行运行该命令。它看起来类似于这样:
要从没有Ant的命令行运行此应用程序,请尝试: C:\Java\openJDK\jdk-12.0.2/bin/java -cp -cp formatproperties.FormatProperties
将该命令粘贴到终端窗口并运行它,用于两个构建(NetBeans 8.2和NetBeans 11.1)。会发生什么?
3用运行ps -x 11.1中的应用程序时产生的ps -x输出以及终端窗口更新您的问题。
你的问题有三种可能的原因:
上述三个步骤将有助于将问题隔离开来。
更新:
基于OP对多个Java安装的反馈,接下来要尝试的是使用NetBeans 11.1中的Java1.8构建和运行应用程序。这样做有两个步骤:
要在NetBeans 11.1中这样做:
https://stackoverflow.com/questions/57843368
复制相似问题