我有一个jar应用程序,它处理并将文件转换为csv文件。我已经使用Java Service Wrapper在Windows服务中运行它。当我运行“InstallApp-NT.Bat”文件并在运行“app”命令时开始运行我的应用程序时,它成功安装了我的jar应用程序。
但是当我尝试在服务中启动服务时,它没有启动并在对话框中显示以下消息<
Windows could not start the generic Preprocessor application on Local Computer. For more information, review the System Event Log. If this is a non-microsoft service, contact the service vendor, and refer to service-specific error code1
I have the system log file and it showing the below error message
System Event log:
--> Wrapper Started as Service
Java Service Wrapper Community Edition 3.3.2
Copyright (C) 1999-2009 Tanuki Software, Ltd. All Rights Reserved.
http://wrapper.tanukisoftware.org
Launching a JVM...
WrapperManager: Initializing...
WrapperSimpleApp:
WrapperSimpleApp: Encountered an error running main:
WrapperSimpleApp: java. Lang. NullPointerException
WrapperSimpleApp: at java. Util. Hashtable. Put(Hashtable. Java: 396)
WrapperSimpleApp: at java. Util. Properties. SetProperty(Properties. Java: 128)
WrapperSimpleApp: at java. Lang. System. SetProperty(System. Java: 701)
WrapperSimpleApp: at com. Dnb. Genericpreprocessor. Process. ProcessRunner. Main(Unknown Source)
WrapperSimpleApp: at sun. Reflect. NativeMethodAccessorImpl. Invoke0(Native Method)
WrapperSimpleApp: at sun. Reflect. NativeMethodAccessorImpl. Invoke(NativeMethodAccessorImpl. Java: 39)
WrapperSimpleApp: at sun. Reflect. DelegatingMethodAccessorImpl. Invoke(DelegatingMethodAccessorImpl. Java: 25)
WrapperSimpleApp: at java. Lang. Reflect. Method. Invoke(Method. Java: 585)
WrapperSimpleApp: at org. Tanukisoftware. Wrapper. WrapperSimpleApp. Run(WrapperSimpleApp. Java: 238)
WrapperSimpleApp: at java. Lang. Thread. Run(Thread. Java: 595)
<-- Wrapper Stopped
我认为应用程序代码中没有任何错误,因为它在运行“app”命令时运行正常。请帮助我现在应该做的。提前谢谢。
我在com.dnb.genericpreprocessor.process.ProcessRunner
课程中使用以下代码。
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.
当我通过提供app命令运行应用程序时...它通过打印环境值来运行应用程序,但是当我在服务中启动时显示相同的错误。
答案 0 :(得分:1)
回答你所说的question update作为答案,你需要确保变量实际上是在你运行应用程序的特定环境中设置的。它似乎不是。实际上,为了避免使用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而失败。
答案 1 :(得分:0)
检查com.dnb.genericpreprocessor.process.ProcessRunner,如果这是您的代码,并查看您在System属性中设置的数据。 NullPointer告诉你传递的密钥或值是Null。
答案 2 :(得分:0)
检查你的wrapper.config;你需要按顺序拥有所有必需的罐子,每个罐子都带有自己的索引号(由于某种原因):
wrapper.java.classpath。 1 = .. / LIB / wrapper.jar
wrapper.java.classpath。 2 =%JAVA_HOME%/ LIB / tools.jar中
...
只是第一个想法。
答案 3 :(得分:0)
我不熟悉您正在使用的专有解决方案,但似乎您以某种方式将其配置错误。
看起来包装器应该具有的某个参数为null并且一直向上传播,直到系统尝试将其设置为属性。
答案 4 :(得分:0)
也许您应该将'DBE'环境放在系统变量而不是用户变量中。 Windows服务从系统帐户开始。