2

関数 NLStart() を使用して RStudio から NetLogo GUI を起動しようとすると、Java に関するメッセージが表示され、GUI が開きません。Win 7 64 ビット、NetLogo 5.0.3、R 2.15.1 および R studio 0.96.304 を使用しています。
これがRコードです...

library(RNetLogo)
nl.path <- "C:\\Program Files (x86)\\NetLogo 5.0.3"
NLStart(nl.path, gui = TRUE, nl.version = 5) 

メッセージを返します

<java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(Unknown Source)
at javax.swing.SwingUtilities.getSharedOwnerFrame(Unknown Source)
at javax.swing.JOptionPane.getRootFrame(Unknown Source)
at javax.swing.JOptionPane.showOptionDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at nlcon.NLink_v5.<init>(NLink_v5.java:108)>

最初は、NetLogo がヘッドレス モードで実行されているのではないかと疑っていましたが、次を使用してモデルを開こうとすると...

model.path <- "\\models\\Sample Models\\Earth Science\\Fire.nlogo"
NLLoadModel(paste(nl.path,model.path,sep=""))

私は得る

<Error in .jcall(nl.obj, "V", "loadModel", .jnew("java/lang/String", model.path)) : 
RcallMethod: invalid object parameter>

ここで何が起こっているのですか?解決策や手がかりをいただければ幸いです。前もって感謝します

4

3 に答える 3

2

まず、R-Forgeで入手可能な最新バージョンのRNetLogo(0.9.6)をインストールしてください。http://rnetlogo.r-forge.r-project.org/ セクション「入手方法」)を参照してください。ただし、これはRNetLogoの問題ではなく、rJavaですでに発生している問題であることがわかっているため、問題を解決することはできません。Java /構成に問題があるようです(ビジュアル表示をサポートしていません-> awt / swing)。

インストールしたJavaの種類(Oracle / Sun JRE、Sun JDK、OpenJDK ...)を記述していません。しかし、これは一般的なJavaの問題ではなく(awtライブラリがインストールされているという結論につながるPointオブジェクトを作成できたため)、構成の問題(rJavaによって開始されたJVMはヘッドレスで実行されているようです)だと思います。モード)。

これはリモート診断では解決が非常に難しいため、Java(および関連するすべての環境変数:JAVA_HOME、PATHの対応するエントリ、おそらくNOAWTなど)とrJavaを削除し、クリーンなものをインストールしようとします。

しかし、これを行う前に、さらに2つのアイデアがあります。

  1. 実行することもできます

    Sys.setenv(NOAWT = 0)

    JVMを開始する前に

    .jinit()

    またはrJavaパッケージをロードする前。しかし、私はあまり楽観的ではありません。

    .jcall( "java / lang / System"、 "S"、 "getProperty"、 "java.awt.headless")

    あなたが報告したように、HeadlessExceptionが発生することはありません。これは私には奇妙に見えます。RStudioなしでこれらすべてのこと(前の回答からも)を行うとどうなりますか?

  2. JGR(JavaベースのR環境を提供するR用のパッケージ。http://cran.r-project.org/web/packages/JGR/index.htmlを参照)をインストールして開くことができますか?その場合は、そこからRNetLogoを起動してみてください。

幸運を!

于 2013-02-18T08:22:08.937 に答える
1

一見、Java の問題のように思えますが、よくわかりません。以前にこのエラーを見たことはありません。

どの Java ディストリビューションを使用していますか (OpenJDK、Sun JRE、Sun JDK ...)? どのバージョンの RNetLogo をインストールしましたか?

z <- installed.packages()
z["RNetLogo","Version"]

エラーは 108 行目でスローされます。ここで、RNetLogo は、NetLogo の読み込み中に発生したエラーを報告するために JOptionPane を開こうとします。したがって、問題は現在、Java の GUI サポートが欠落していることです。これは、NetLogo が開始されない根本的な問題である可能性もありますが、何か別のものである可能性もあります。

私の最初の提案は、GUI ライブラリなしで軽量バージョンの Java をインストールするか、そのようなライブラリを使用しないように構成することです。

したがって、最初のテストから始めます。MS-DOS プロンプトを開き、NetLogo インストールに移動します。

cd  "C:\Program Files (x86)\NetLogo 5.0.3"

そこから NetLogo を起動してみてください:

java -jar NetLogo.jar

どうしたの?

最初のテストに合格した場合の 2 番目のテスト: 新しい RStudio セッションを開き、rJava をロードします。

library(rJava)

それを初期化します:

.jinit()

シンプルな awt オブジェクトを作成してみてください:

.jnew( "java/awt/Point", 10L, 10L )

そして単純な awt ウィンドウを開こうとします:

f <- .jnew("java/awt/Frame","Hello")
.jcall(f,,"setVisible",TRUE)

これにより、単純なウィンドウが開きます (ハンドラーがないため、X で閉じることはできません。RStudio を閉じるだけです)。そうでない場合は、Java/rJava の awt GUI サポートに何か問題があります。

少なくともスイング JOptionPane テスト:

component <- .jnull()
component <- .jcast(component, new.class = "java/awt/Component")
message <- .jnew("java/lang/String","This is a JOptionPane test from rJava.")
message <- .jcast(message, new.class = "java/lang/Object")
title <- .jnew("java/lang/String","Test")
type <- .jnew("java/lang/Integer", as.integer(2))
f <- .jnew("javax/swing/JOptionPane")
.jcall(f,,"showMessageDialog", component, message, title, .jsimplify(type))

RStudio を元に戻すと、ダイアログ ウィンドウが表示されます。そうでない場合は、Java/rJava のスイング サポートに問題があります。

rJava が期待する Java バージョンで実行されるかどうかを確認します。

.jcall("java/lang/System", "S", "getProperty", "java.vm.version")
.jcall("java/lang/System", "S", "getProperty", "java.vm.name")
.jcall("java/lang/System", "S", "getProperty", "java.vm.info")
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
.jcall("java/lang/System", "S", "getProperty", "sun.arch.data.model")
.jcall("java/lang/System", "S", "getProperty", "java.vm.info")

これを報告するもの:

.jcall("java/lang/System", "S", "getProperty", "java.awt.headless")

この:

Sys.getenv("NOAWT")

?

于 2013-02-17T19:31:27.587 に答える