运行jar应用程序fom窗口服务时Java服务包装中存在疑问
我有一个jar应用程序,可以处理文件并将其转换为csv文件。我已经使用Java服务包装器在windows服务中运行了它。当我运行“InstallApp NT.Bat”文件时,它成功地安装了我的jar应用程序,当我运行“app”命令时,它开始运行我的应用程序运行jar应用程序fom窗口服务时Java服务包装中存在疑问,java,Java,我有一个jar应用程序,可以处理文件并将其转换为csv文件。我已经使用Java服务包装器在windows服务中运行了它。当我运行“InstallApp NT.Bat”文件时,它成功地安装了我的jar应用程序,当我运行“app”命令时,它开始运行我的应用程序 但是,当我尝试在services中启动服务时,它不会启动并在对话框中显示以下消息检查com.dnb.genericprocessor.process.ProcessRunner(如果是您的代码),并查看您在System property中设置
但是,当我尝试在services中启动服务时,它不会启动并在对话框中显示以下消息检查com.dnb.genericprocessor.process.ProcessRunner(如果是您的代码),并查看您在System property中设置的数据。空指针告诉您传递的键或值为空。检查wrapper.config;您需要将所有必要的jar按顺序排列,并且每个jar都有自己的索引号(出于某种原因): wrapper.java.classpath.1=../lib/wrapper.jar wrapper.java.classpath.2=%java\u HOME%/lib/tools.jar
只是第一个想法。我不熟悉您使用的专有解决方案,但您似乎在某种程度上配置了错误的解决方案 看起来包装器应该具有的某些参数为null,并且一直在传播,直到系统尝试将其设置为属性。如果回答您的问题,您需要确保该变量实际上是在运行应用程序的特定环境中设置的。看来并非如此。事实上,为了避免出现
NullPointerException
,我会将您的代码修改为:
String loghome = System.getenv("DBE");
if (loghome == null) {
// LOG A COMPLAINT that the environment variable is not set
loghome = "some reasonable default value";
}
System.setProperty("log.home", loghome);
因此,如果应用程序在错误的环境中执行,至少不会因迟钝的NPE而失败。也许您应该将“DBE”环境放在系统变量而不是用户变量中。
Windows服务从系统帐户启动。嗨,罗伯特:
我有一个check wrapper.config文件。。所有的jar都只给出了正确的索引号,这是因为我在代码中使用了“System.getenv()”方法。当我们启动窗口服务时,它不会在运行时获取用户变量的值,这是因为我在代码中使用了“System.getenv()”方法。当我们启动窗口服务时,它在运行时未获取用户变量的值。您的服务正在使用哪个帐户运行?在定义该变量后,您是否重新启动了系统?最后尝试将该变量定义为系统级变量。
String projectHome = "D:\BL";
System.setProperty("project.home", projectHome);
System.setProperty("log.home",System.getenv("DBE")); ---> DBE is the envirinment variable I created in user variables.
String loghome = System.getenv("DBE");
if (loghome == null) {
// LOG A COMPLAINT that the environment variable is not set
loghome = "some reasonable default value";
}
System.setProperty("log.home", loghome);