首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getRuntime()结果取决于Netbeans版本

getRuntime()结果取决于Netbeans版本
EN

Stack Overflow用户
提问于 2019-09-08 15:41:18
回答 1查看 185关注 0票数 2

通过检查计算机上正在运行的进程,我使用了几行代码来检查特定的软件程序是否在我的计算机上运行。完整的代码是:

代码语言:javascript
复制
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都指示运行相同的命令行:

代码语言:javascript
复制
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中的结果:

代码语言:javascript
复制
  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的结果(注意命令被截断)

代码语言:javascript
复制
  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 >关于时获得的信息:

代码语言:javascript
复制
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
代码语言:javascript
复制
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()命令中出现不同的结果。

EN

回答 1

Stack Overflow用户

发布于 2019-09-10 15:40:33

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

1用Help > About窗口为NetBeans 8.2和NetBeans 11.1的输出更新您的问题。例如,在我的机器上,这就是我在NetBeans 11.1中得到的:

代码语言:javascript
复制
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构建应用程序,并将显示在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输出以及终端窗口更新您的问题。

你的问题有三种可能的原因:

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

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

更新:

基于OP对多个Java安装的反馈,接下来要尝试的是使用NetBeans 11.1中的Java1.8构建和运行应用程序。这样做有两个步骤:

  1. 在NetBeans 11.1中添加Java1.8作为Java平台(如果有必要)。
  2. 重新构建应用程序并使用Java1.8运行它。

要在NetBeans 11.1中这样做:

  • 选择Tools > Java ,然后单击Add platform.按钮(如果Java1.8还不是平台)。
  • 选择平台类型Java,然后单击Next >
  • 选择平台文件夹屏幕上,导航到java1.8安装的根目录。在我的例子中,它是C:\Java\jdk1.8.0_221,但是很明显,您的路径会有所不同。
  • 完成将Java1.8添加为Java的向导,并单击关闭按钮关闭Java 窗口。
  • Projects窗格中选择您的项目,右键单击并从上下文菜单中选择Properties
  • Source > Source二进制格式设置为JDK 8。
  • 库> Java 设置为Java1.8(或之前为Java1.8选择的任何平台名称),然后单击OK关闭 Properties窗口。
  • 选择您的项目,右键单击并选择CleanandBuildJava1.8重新构建
  • 选择您的项目,右键单击并选择 run ,以便使用Java1.8在NetBeans 11.1中运行应用程序。与使用Java 11相比有什么变化吗?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57843368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档