请求:
这是我所在地区的 Java 开发人员面临的一个非常常见的问题。我真的被这个问题困扰了很多天。搜索并尝试了很多,阅读文档。阅读所有与 JavaExe 相关的 stackoverflow 问题。仅当您以前做过类似的事情并且有全面的答案时才回复。我非常感谢社区!
塞纳里奥:
我正在使用JavaExe在桌面交互功能中将应用程序作为系统服务运行。 确切地说,我有一个捕获桌面屏幕截图的应用程序。我希望它在任何用户登录上运行(作为管理员),这样就没有人可以阻止它。
我有一个 myapp.jar、settings.txt 和一个 lib 目录。
我进行了大量搜索并发现 JavaExe 可以工作(通过观看其示例)
如果谁有更好的办法。请注明。
问题:
根据我的研究,
您必须创建一个名为 .exe 的 .properties 文件,并在此文件中写入
"RunType = 1"
。您在主类中定义了一个静态方法:
serviceInit()
我需要放置任何类或引用/导入吗?怎么办?
编辑:
我下面的代码可以作为独立的.jar运行,也可以在javaExe.exe中运行。
它现在确实创建了系统服务并以SYSTEM用户身份运行。但它不与桌面交互。即它不显示任何 GUI。
package temp;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
public class Temp {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
serviceInit();
}
public static boolean serviceInit(){
new Thread(){
public void run(){
Integer i = 0;
while(i < 999999999){
JOptionPane.showMessageDialog(null,i);
i++;
}
}
}.start();
return true;
}
}
我认为将 .jar、lib 目录和 settings.txt 捆绑到一个 .exe 中是不可能的吗?
最佳答案
你的情况应该是:
public class MyApp_ServiceManagement
{
static boolean isMsgToDisplay = false;
/////////////////////////////
public static boolean serviceInit()
{
(new Thread()
{
public void run()
{
for(int i=0;i < 6;i++)
{
try { sleep(5*1000); }
catch(Exception ex) {}
isMsgToDisplay = true;
}
}
}).start();
return true;
}
/// is Data ready to be send to the UI ?
public static boolean serviceIsDataForUI()
{
return isMsgToDisplay;
}
/// Data to be send to the UI
public static Serializable serviceDataForUI()
{
isMsgToDisplay = false;
return "hello, I am an interactive Service";
}
}
对于 UI 部分:
public class MyApp_TaskbarManagement
{
/// To show (or not) the icon in tray
public static boolean taskIsShow()
{
return false;
}
/// Receive the message from Service
public static void taskDataFromService(Serializable data)
{
JOptionPane.showMessageDialog(null, data);
}
/// descr of UI
public static String[] taskGetInfo()
{
return new String[]
{
"UI part of Service"
};
}
}
关于JavaExe 和 Java 应用程序作为 Windows 系统服务与桌面交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16815956/