Jar文件独立运行时工作,但在Windows服务下无法运行【JAVA教程】

!
也想出现在这里? 联系我们
信息

Jar文件独立运行时工作,但在Windows服务下无法运行,第1张

概述Jar文件独立运行工作,但在Windows服务下无法运行

我有一个Java项目,它编译成一个可执行的jar文件v-agent-exe.jar。 这个jar是一个日志服务器,日志行被发送给它进行处理。 我可以使用这个命令来执行它:

`java -jar v-agent-exe.jar -a watch -f config.ini`.

执行后,这个jar文件将在端口1235创build一个ServerSocket,并监听来自客户端的input数据。 收到数据后,程序将处理数据并将结果发送回客户端。 当我从CMD窗口执行jar时,处理工作正常。

现在我正在试图将Jar文件作为windows服务(我正在使用windows 10)进行打包。 我在Visual Studio中创build了一个“ windows服务项目 ”,如下所示: – 调用者类有call()方法来执行jar文件的使用过程。 – AgentService是在另一个线程中执行Caller-> call()的服务。 – 程序是加载AgentService的主要条目。

Caller.cs

识别命令行参数

file.copy与手动fileStream.Write复制文件

C# – 删除文本文件中的重复行

PHP分析器的cachegrind文件?

如何使用Python 2.7创build一个希伯来文名称的文件?

public class Caller { static Process proc; public Process GetProcess(){ return proc; } public voID call() { try { String dir = AppDomain.CurrentDomain.BaseDirectory; proc = new Process { StartInfo = new processstartinfo { WorkingDirectory = dir,filename = \”java.exe\”,Arguments = @\”-jar v-agent-exe.jar -a watch -f config.ini\”,UseShellExecute = false,RedirectStandardOutput = true,RedirectStandardError = true,RedirectStandardinput = true,CreateNowindow = true } }; proc.Start(); while (!proc.StandardError.EndOfStream) { string line = proc.StandardError.Readline(); } } catch (Exception ex) { VAgentService.writeLog(\”Error when call process: \” + ex.Message); } } }

AgentService

public partial class AgentService : ServiceBase { private string jarPath; private string iniPath; static Process proc; Caller caller; public AgentService() { InitializeComponent(); } protected overrIDe voID OnStart(string[] args) { writeLog(\”On start\”); try { caller = new Caller(); writeLog(\”Prepare to launch thread\”); Thread t = new Thread(new ThreadStart(caller.call)); t.Start(); } catch (Exception ex) { EventLog.WriteEntry(\”Demo error: \” + ex.Message); } } protected overrIDe voID OnStop() { proc = caller.GetProcess(); if (proc != null && !proc.HasExited) { proc.Kill(); } else { … } } }

Program.cs中

static class Program { /// <summary> /// The main entry point for the application. /// </summary> static voID Main(String[] args) { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new AgentService() }; ServiceBase.Run(ServicesToRun); } }

build立服务项目后,我有AgentService.exe。 我将它安装到我的系统使用:

sc create VAgentLogging binpath= %CD%AgentService.exe depend= lmhosts start= auto

在service.msc中启动服务之后,我可以telnet到java进程正在监听的端口“1235”(我确信只有运行在这个端口上的jar)。 根据java程序的日志,它仍然可以接收到部分数据,但似乎无法发送回客户端或其他东西,导致后续的过程无法完成。 我认为我的问题是:jar文件可以作为独立执行,但不知何故,当它包装在我的服务项目时,它很糟糕。 我还没有发布jar的代码,因为我认为这个错误与windows服务项目有关。 如果您需要Java代码,请告诉我,我会在这里更新它。 任何帮助,将不胜感激。

python – 无法添加图像的GUI(tkinter)在windows上

在windows中通过AndroID中的代理启用Internet连接

迭代文件夹中的大量文件

windows Phone 8上的ARM NEON程序集无法正常工作

windows应用程序Java Servletparameter passing

总结

以上是内存溢出为你收集整理的Jar文件独立运行时工作,但在Windows服务下无法运行全部内容,希望文章能够帮你解决Jar文件独立运行时工作,但在Windows服务下无法运行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞91 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容