0

Ubuntu 12.04で、作成したいくつかのクラスで拡張された、よく知られているJavaベースのCoojaシミュレーターを実行する必要があります。私のJavaファイルで、jfreechartパッケージを思い出します。

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.chart.axis.ValueAxis;  

次のコマンドでシミュレーターを実行します:
$ ant run_bigmem

次に、いくつかの例外がポップアップします。

compile:
[javac] Compiling 44 source files to /home/user/contiki_copy/tools/cooja/build
[javac] /home/user/contiki_copy/tools/cooja/java/se/sics/cooja/plugins/sixlowpan_metrics/Chart.java:7: error: package org.jfree.chart does not exist
[javac] import org.jfree.chart.ChartFactory;
[javac]                       ^
[javac] /home/user/contiki_copy/tools/cooja/java/se/sics/cooja/plugins/sixlowpan_metrics/Chart.java:8: error: package org.jfree.chart does not exist
[javac] import org.jfree.chart.ChartPanel;
[javac]                       ^
[javac] /home/user/contiki_copy/tools/cooja/java/se/sics/cooja/plugins/sixlowpan_metrics/Chart.java:9: error: package org.jfree.chart does not exist
[javac] import org.jfree.chart.JFreeChart;

 .
 .
 .
 and so on..  

次に、ファイルを変更しました:/home/user/.bashrcそして次の行を追加しました:

export CLASSPATH=.:/home/user/contiki_copy/tools/cooja/lib/jfreechart-1.0.11.jar:/home/user/contiki_copy/tools/cooja/lib/jcommon-1.0.14.jar  

次に、プロンプトから次のように入力します。
$ echo $ CLASSPATHを入力して、環境変数が正しく入力されているかどうかを確認すると、実際には次のようになります。

user@ubuntu:~/contiki_copy/tools/cooja$ echo $CLASSPATH 
.:/home/user/contiki_copy/tools/cooja/lib/jfreechart-1.0.11.jar:/home/user/contiki_copy/tools/cooja/lib/jcommon-1.0.14.jar

これらすべての努力にもかかわらず、何も変わっておらず、私はまだエラーを受け取ります。

build.xmlファイル の重要な部分は次のとおりだと思います。

<target name="run_bigmem" depends="init, compile, jar, copy configs">
<java fork="yes" dir="${build}" classname="se.sics.cooja.GUI" maxmemory="1536m">
  <arg line="${args}"/>
  <env key="LD_LIBRARY_PATH" value="."/>
  <classpath>
<pathelement path="${build}"/>
    <pathelement location="lib/jdom.jar"/>
    <pathelement location="lib/log4j.jar"/>
    <pathelement location="lib/jsyntaxpane.jar"/>
<pathelement location="lib/jfreechart-1.0.11.jar"/>
    <pathelement location="lib/jcommon-1.0.14.jar"/>
  </classpath>
</java>

ディレクトリにすべてのjarファイルがあります:/ home / user / contiki_copy / tools / cooja / libそしてディレクトリ内のすべてを実行しています:/ home / user / contiki_copy / tools/cooja

4

2 に答える 2

0

最終的な解決策:
この問題を修正する唯一の方法は、build.xmlファイルを使用することです。antがjavaクラスパスenv-varを気にしないことは明らかです。ビルドファイルを編集するときは、プロジェクトに必要なjarを、正しい「目標」に、さらにはxmlファイルの「コンパイル」ターゲットに配置するようにしてください。

たとえば、次の方法でcoojaを開始した場合:

ant run

ビルドファイルの目標「実行」を編集する必要があります。この別の方法でシミュレータを起動した場合:

ant run_bigmem

「run_bigmem」ゴールを編集する必要があります。

さらに、「コンパイル」目標も適切に編集するようにしてください。そうしないと、コンパイルが失敗し、多くのインポートも失敗します。

于 2013-02-23T09:51:30.853 に答える
0

関連するすべてのjarファイルをantの「コンパイル」ゴールに含める必要があります(「runfree」ゴールのように)。ほとんどの場合、さまざまな目標間で共通のライブラリセットを共有できます。アリでこれができることはかなり確かですが、私自身はそれについてあまり詳しくありません。

于 2013-02-22T17:13:36.690 に答える