Ошибка YAJSW с общедоступным статическим классом

У меня есть java-приложение, которое я пытаюсь начать использовать YAJSW. Это простое приложение «Hello World», и я следую инструкциям здесь: http://yajsw.sourceforge.net/#mozTocId527639

Я сделал следующее:

  • экспортировал мой проект из eclipse в виде исполняемого JAR-файла.

  • Запустил genconfig - проблем нет

  • Я отредактировал файл wrapper.conf и добавил расположение jar-файла.

  • #P6# <блочная цитата> #P7#

Класс, на который он ссылается, является основным классом, который должен быть общедоступным статическим. Я застрял! Кто-нибудь там с советом?


person Patrick    schedule 03.02.2012    source источник
comment
Не могли бы вы загрузить свой код hello world, который работает как сервис, я хочу проверить, как он работает... или вы можете ответить на мой вопрос о yajsw... Спасибо.   -  person Wearybands    schedule 27.02.2013
comment
Я перешел от использования этого и нашел другое решение. Удачи.   -  person Patrick    schedule 27.02.2013


Ответы (1)


У меня была такая же проблема (запуск yajsw-stable-11.0 на Java 1.6.0_30-b12, Win XP Pro v 2002 SP3):

INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|init 
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|ahessian jmx service bound to port 15002
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|set state IDLE->STARTING
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|Win service: before service init
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|starting Process
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|Controller State: UNKNOWN -> WAITING
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|+ ServiceMain callback
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|reporting status 0
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|reporting status 0
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|onstart
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|working dir C:\dev\workspaceTax\socket-proxy
INFO|wrapper|Service socket-proxy|12-04-11 11:48:32|create script: scripts/trayMessage.gv
INFO|wrapper|Service socket-proxy|12-04-11 11:48:33|found script scripts/trayMessage.gv
INFO|wrapper|Service socket-proxy|12-04-11 11:48:33|spawning wrapped process
INFO|wrapper|Service socket-proxy|12-04-11 11:48:33|started process with pid 3720
INFO|wrapper|Service socket-proxy|12-04-11 11:48:33|waiting for termination of process
INFO|wrapper|Service socket-proxy|12-04-11 11:48:33|set state STARTING->RUNNING
INFO|3720/0|Service socket-proxy|12-04-11 11:48:33|[INFO] DefaultFileReplicator - Using "C:\WINDOWS\TEMP\vfs_cache" as temporary files store.
INFO|3720/0|Service socket-proxy|12-04-11 11:48:33|java.lang.IllegalAccessException: Class org.rzo.yajsw.app.WrapperJVMMain can not access a member of class [...].socketproxy.Proxy with modifiers "public static"
INFO|wrapper|Service socket-proxy|12-04-11 11:48:33|Trigger found: Exception
INFO|3720/0|Service socket-proxy|12-04-11 11:48:33| at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
INFO|wrapper|Service socket-proxy|12-04-11 11:48:33|start script scripts/trayMessage.gv
INFO|3720/0|Service socket-proxy|12-04-11 11:48:33| at java.lang.reflect.Method.invoke(Unknown Source)
INFO|3720/0|Service socket-proxy|12-04-11 11:48:33| at org.rzo.yajsw.app.WrapperJVMMain.executeMain(WrapperJVMMain.java:53)
INFO|3720/0|Service socket-proxy|12-04-11 11:48:33| at org.rzo.yajsw.app.WrapperJVMMain.main(WrapperJVMMain.java:36)
INFO|wrapper|Service socket-proxy|12-04-11 11:48:33|end script scripts/trayMessage.gv
INFO|3720/0|Service socket-proxy|12-04-11 11:48:34|process terminated
INFO|3720/0|Service socket-proxy|12-04-11 11:48:34|Controller State: WAITING -> PROCESS_KILLED
INFO|wrapper|Service socket-proxy|12-04-11 11:48:34|restart process due to default exit code rule

В моем случае класс, содержащий статический общедоступный основной метод, не был объявлен общедоступным, поэтому по умолчанию он был закрытым для пакета.

class Proxy {
...
    public static void main(String args[]) throws IOException{
        ...
        }
}

Публичные методы частных классов пакета не видны классам, принадлежащим другому пакету, поэтому в моем случае это была проблема. См., например, https://stackoverflow.com/questions/5260467/public-methods-in-package-private-classes.

public class Proxy {
...
    public static void main(String args[]) throws IOException{
        ...
        }
}

Объявление класса public, как указано выше, решило проблему для меня. Может быть, вы могли бы опубликовать более подробную информацию обо всей проблеме, и кто-нибудь опубликует решение. С уважением -ГФ

person Giovanni Faglia    schedule 11.04.2012