Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
У меня была некоторая удача с Сервисная Обертка Java
Я в настоящее время требую, чтобы это запустило основанное на Eclipse приложение, но я должен установить некоторые переменные сначала, который локален для того приложения. sc.exe только позволит исполняемые файлы, но не сценарии, таким образом, я обратился к autoexnt.exe, который является частью набор ресурса Windows 2003 . Это ограничивает сервис файлом единого пакета, но мне только нужен один сценарий пакетной обработки, который будет преобразован на службу.
чао!
Другой хороший вариант FireDaemon. Это используется некоторыми крупными магазинами как НАСА, IBM, и т.д.; посмотрите их веб-сайт о полном списке.
Я всегда просто использую sc.exe (см. http://support.microsoft.com/kb/251192 ). Это должно быть установлено на XP от SP1, и если это не находится в Вашей разновидности Vista, можно загрузить, загружают его набором ресурса Vista.
я не сделал ничего также сложного с Java, но использующий ни одного, который полностью определенный параметр командной строки (x:\java.exe....) или создающий сценарий с Муравьем, чтобы включать depencies и установить параметры хорошо работает для меня.
Мне не нравилось лицензирование за Сервисную Обертку Java. Я пошел с ActiveState Perl для записи сервиса, который делает работу.
я думал о записи сервиса в C#, но мои ограничения времени были слишком трудны.
Я использовал JavaService прежде с хорошим успехом. Это не было обновлено за несколько лет, но было симпатичным горным телом назад, когда я использовал его.
Я думаю Сервисная Обертка Java работы хорошо. Обратите внимание, что существует три пути для интегрирования приложения. Это кажется, что опция 1 будет работать лучше всего на Вас, учитывая, что Вы не хотите изменять код. Конфигурационный файл может стать немного сумасшедшим, но просто помнить, что (для опции 1) программа Вы запускаете и в пользу которого Вы будете определять аргументы, их программа помощника, которая тогда запустит Вашу программу. Они имеют конфигурационный файл в качестве примера для этого.
One more option is WinRun4J. This is a configurable java launcher that doubles as a windows service host (both 32 and 64 bit versions). It is open source and there are no restrictions on its use.
(full disclosure: I work on this project).
JavaService - это LGPL. Это очень просто и стабильно. Настоятельно рекомендуется.
Apache Commons Daemon - хорошая альтернатива. Он имеет Procrun для служб windows и Jsvc для демонов unix. Он использует менее ограничительную лицензию Apache, и Apache Tomcat использует его как часть себя для работы под Windows и Linux! Заставить его работать немного сложно, но есть исчерпывающая статья с рабочим примером.
Кроме того, вы можете посмотреть на bin\service.bat в Apache Tomcat, чтобы получить представление о том, как настроить службу. В Tomcat они переименовывают двоичные файлы Procrun (prunsrv.exe -> tomcat6.exe, prunmgr.exe -> tomcat6w.exe).
Кое-что, с чем я столкнулся, используя Procrun, ваши методы запуска и остановки должны принимать параметры (String[] argv). Например, "start(String[] argv)" и "stop(String[] argv)" будут работать, но "start()" и "stop()" будут вызывать ошибки. Если вы не можете изменить эти вызовы, подумайте о создании класса-бутстраппера, который сможет изменить эти вызовы в соответствии с вашими потребностями.