2009-02-11 29 views
0

我有一個jar應用程序,它將文件處理並轉換爲csv文件。我已經使用Java Service Wrapper在Windows服務中運行它。它在我運行「InstallApp-NT.Bat」文件時成功安裝了我的jar應用程序,並在運行「app」命令時開始運行我的應用程序。在Java服務包裝器中運行jar應用程序fom窗口服務存在疑問

但是,當我嘗試啓動服務的服務,它沒有啓動,並顯示在對話框下面的消息<

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 

我不認爲在應用程序代碼中的任何錯誤,因爲它細運行時,運行「應用程序「命令。請幫助我現在應該做的。提前致謝。


我在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. 

當我運行通過給應用程序命令的應用...它運行通過打印環境的價值,但顯示了當我在服務啓動它同樣的錯誤應用。

+0

你的服務用於運行什麼帳戶?在定義該變量之後,是否還要重新啓動系統?最後嘗試將該變量定義爲系統級變量。 – 2009-02-11 12:03:25

回答

0

如果這是您的代碼,請查看com.dnb.genericpreprocessor.process.ProcessRunner,並查看您在System屬性中設置了哪些數據。空指針告訴您所傳遞的鍵或值是空值。

+0

這是因爲我在代碼中使用了「System.getenv()」方法。當我們啓動窗口服務時,它不會在運行時獲取用戶變量的值。 – raja 2009-02-11 11:28:39

0

檢查你的wrapper.config;您需要訂購所有必需的罐子,並且每個都帶有自己的索引編號(出於某種原因):

wrapper.java.classpath。 = ../lib/wrapper.jar

wrapper.java.classpath。 =%JAVA_HOME%/ lib中/的tools.jar

...

只是第一個念頭。

+0

嗨羅伯特:
我檢查wrapper.config文件..所有的罐子只有在正確的索引號。 – raja 2009-02-11 10:39:33

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如果在錯誤的環境中執行失敗。

0

也許你應該把你的'DBE'環境放入系統變量而不是用戶變量中。 Windows服務從系統帳戶啓動。

相關問題