我有两台电脑,运行 Debian5 的 PC_1,运行 Windows 的 PC_2,我需要让PC_1在启动时自动启动一个Jar文件。
当我将一个脚本文件放入 /etc/init.d 中以执行 Jar 文件时,启动会挂起在终端屏幕上(在进入 debian 的正常 GUI 屏幕之前),因为 Jar 文件处于无限循环中(不断运行检查)。
当我将脚本文件放入 /etc/rc.local 时,我设法以某种方式在显示 GUI 屏幕后执行它,但它作为后台进程运行,因此 Jar 文件的 JFrame 不会显示。
我是否知道是否有任何方法可以运行 Jar 文件根和在前景中以便显示 GUI 吗?
我之所以要求以 root 身份运行程序是因为我需要访问串行端口。所以... 是的,我需要 Root 权限。
答案1
请不要以 root 身份运行程序,尤其是 Java 程序。如果您确实需要 root 资源,例如监听 < 1024 端口,那么请使用单独的程序(如 apache)并通过套接字或其他端口将通信传递给您的 java 文件。
您可以将内容放入用户的 ~/.xinitrc 中,以便在 Xorg 服务器(gui 屏幕)启动时运行。另外,请查看是否有 /etc/X11/Xsession.d/startup-local,并将运行脚本放在那里。
答案2
在启动期间,X11 尚未启动并运行,因此无法启动 JFrame。
如果用户登录,则他拥有桌面,并且需要他的 Xauthority 才能使用 X11。您有自动登录吗?或者 X11 会向您显示登录屏幕吗?
您可以在用户自动启动中启动一个程序,并在 sudoers 文件中修复权限。