Сомневаюсь в обертке Java Service при запуске jar-приложения из оконной службы - PullRequest
0 голосов
/ 11 февраля 2009

У меня есть jar-приложение, которое обрабатывает и конвертирует файл в csv-файл. Я сделал это для запуска в службе Windows, используя Java Service Wrapper. Он успешно установил мое jar-приложение, когда я запускаю файл «InstallApp-NT. Bat», и запускает мое приложение, когда я запускаю команду «app».

Но когда я пытаюсь запустить службу в службах, она не запускается и показывает следующее сообщение в диалоговом окне <</p>

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.

Когда я запускаю приложение, давая команду приложения ... Оно запускает приложение, печатая значение среды, но показывая ту же ошибку при запуске его в сервисе.

Ответы [ 5 ]

1 голос
/ 11 февраля 2009

Отвечая на вопрос об обновлении , который вы сформулировали как ответ, вы должны убедиться, что переменная действительно установлена ​​в конкретной среде, в которой вы запускаете приложение. Похоже, что это не так. На самом деле, чтобы избежать 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 голосов
/ 11 мая 2012

Может быть, вы должны поместить свою среду DBE в системные переменные, а не в пользовательские переменные. Служба Windows запускается с системной учетной записью.

0 голосов
/ 11 февраля 2009

Проверьте ваш wrapper.config; вам нужно иметь все необходимые банки по порядку, и каждый со своим собственным индексом (по некоторым причинам):

wrapper.java.classpath. 1 = .. / Библиотека / wrapper.jar

wrapper.java.classpath. 2 =% JAVA_HOME% / Библиотека / tools.jar

...

Просто первая мысль.

0 голосов
/ 11 февраля 2009

Я не знаком с проприетарным решением, которое вы используете, но, похоже, вы как-то настроили его неправильно.

Похоже, какой-то параметр, который должен иметь оболочка, имеет значение null и распространяется до тех пор, пока система не попытается установить его как свойство.

0 голосов
/ 11 февраля 2009

Проверьте com.dnb.genericpreprocessor.process.ProcessRunner, если это ваш код, и посмотрите, какие данные вы устанавливаете в свойстве System. NullPointer сообщает, что ключ или значение, которое вы передали, имеет значение Null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...