Apache Commons Daemonを使用してWindowsサービスに変換したJavaアプリケーションのEclipseから次のファイル構造を持っています。 Subscriber.javaでApache Commonsデーモンを使用してJavaアプリケーションからWindowsサービスを開始するときに指定されたファイルが見つかりません
SubscriberACD
/Maven Dependencies
/src/main/java
/org.SubscriberACD
/Subscriber.java
/src/test/java
/JRE System Librar
/src
/target
config.xml
pom.xml
文字列が定義され、ここであり:ここ
private static final String CONFIG_FILE = "config.xml";
は(:Java: How to read and write xml files?このポストのオフに基づいて):XMLファイルから読み取るためのコードの断片である
Document document;
DocumentBuilderFactory doc_builder_factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder doc_builder = doc_builder_factory.newDocumentBuilder();
document = doc_builder.parse(CONFIG_FILE);
は
サービスのための私のファイルディレクトリには、次のようになります。
E:\SubscriberACD
\bin
\subscriberACD.exe
\subscriberACDw.exe
\classes
\org
\SubscriberACD
\Subscriber.class
\config.xml
\3rdpartyjarfiles
\SubscriberACD.jar
\logs
クラスの下でconfig.xmlの下にあるSubscriberACDを試してみる方法に注目してください。しかし、それは動作しませんでした。また、私のプロジェクトをSubscriberACD.jarとしてエクスポートし、\ classesフォルダの下に置くことにも注意してください。 eclipseからは、config.xmlもそのjarファイルにパッケージ化されているように見えます。私は私のWindowsサービスを開始しようとすると、私は次のエラーを取得する:
2016-04-16 15:08:27 Commons Daemon procrun stderr initialized
Exception in thread "main" n\config.xml (The system cannot find the file specified)
java.lang.NumberFormatException: For input string: "null"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at zmq.TcpAddress.resolve(TcpAddress.java:105)
at zmq.Address.resolve(Address.java:98)
at zmq.SocketBase.connect(SocketBase.java:510)
at org.zeromq.ZMQ$Socket.connect(ZMQ.java:1246)
at org.SubscriberACD.Subscriber.start(Subscriber.java:114)
at org.SubscriberACD.Subscriber.windowsService(Subscriber.java:61)
私は逃したいくつかの追加の設定がありましたか?