首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动Cooja时出现java类路径问题

启动Cooja时出现java类路径问题
EN

Stack Overflow用户
提问于 2013-02-22 16:44:23
回答 2查看 1.4K关注 0票数 0

我必须运行一个著名的基于java的Cooja模拟器,在Ubuntu12.04下用我制作的一些类进行扩展。在我的java文件中,我回顾了jfreechart包:

代码语言:javascript
复制
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

然后出现了一些例外:

代码语言:javascript
复制
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,并添加了以下几行:

代码语言:javascript
复制
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查看是否正确地输入了环境变量,实际上我得到:

代码语言:javascript
复制
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

尽管做了这些努力,但一切都没有改变,我仍然得到了error..dunno,真的,有什么想法吗?

我想build.xml文件的关键部分如下:

代码语言:javascript
复制
<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>

我有目录:/home/user/contiki_copy/tools/cooja/lib中的所有jars,我正在目录中运行所有内容:/home/user/contiki_copy/tools/cooja.

EN

回答 2

Stack Overflow用户

发布于 2013-02-22 17:13:36

您需要在ant“编译”目标中包含所有相关的jars (就像在"runfree“目标中)。最有可能的是,您可以在不同的目标之间共享一组通用的libs。很肯定你能用蚂蚁做这件事,但我自己也不太熟悉。

票数 0
EN

Stack Overflow用户

发布于 2013-02-23 09:51:30

最终解决方案:

解决此问题的唯一方法是通过build.xml文件。很明显,ant并不关心java类路径env-var。在编辑构建文件时,请确保将jars放在您的项目中,在正确的“目标”中,甚至在xml文件的“编译”目标中。

例如,如果您以这种方式开始使用cooja:

代码语言:javascript
复制
ant run

您需要编辑构建文件的目标“运行”。如果您以另一种方式启动模拟器:

代码语言:javascript
复制
ant run_bigmem

您需要编辑"run_bigmem“目标。

此外,还确保正确地编辑“编译”目标,否则编译将失败,许多导入也将失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15029078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档