0

YAJSWの使用を開始しようとしているJavaアプリケーションがあります。これは単純な「HelloWorld」アプリケーションであり、次の手順に従います:http: //yajsw.sourceforge.net/#mozTocId527639

私は次のことをしました:

  • プロジェクトをeclipseから実行可能なJARファイルとしてエクスポートしました。

  • genconfigを実行しました-問題ありません

  • 私はwrapper.confを編集し、jarファイルの場所を追加しました

  • runConsole.batを実行すると、次のエラーが発生します。

    java.lang.IllegalAccessException:クラスorg.rzo.yajsw.app.WrapperJVMMainは、修飾子「publicstatic」を持つクラスxxxxのメンバーにアクセスできません

それが参照するクラスはメインクラスであり、publicstaticである必要があります。ハマった!アドバイスを持っている人はいますか?

4

1 に答える 1

2

同じ問題が発生しました(Java 1.6.0_30-b12、Win XP Pro v 2002 SP3でyajsw-stable-11.0を実行):

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

私の場合、静的なpublic mainメソッドを含むクラスはpublicとして宣言されていなかったため、デフォルトであるpackage-privateでした。

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{
        ...
        }
}

上記のようにクラスを公開すると宣言すると、問題は解決しました。たぶん、あなたは問題全体についてもう少し詳細を投稿することができ、誰かが解決策を投稿するでしょう。よろしく-GF

于 2012-04-11T14:07:11.053 に答える