在VMWare上运行java代码并引用外部jar文件

时间:2011-05-09 15:33:56

标签: java jar classpath vmware vmware-workstation

我正在尝试在VMWare Workstation上运行简单的java代码。我有以下简单测试主文件:

import cern.jet.random.engine.RandomSeedGenerator;;

public class TestDataService {

    //private static Logger logger = Logger.getLogger(TestDataService.class);
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println("Hello World DAI!");

        // Input some data.
        RandomSeedGenerator re = new RandomSeedGenerator();
        return;
}
}

RandomSeedGenerator是colt.jar库中的一个类,我的lib文件夹下有一个jar文件。

我正在用ant构建项目,我有以下清单文件,我设置了类路径:

Manifest-Version: 1.0
Main-Class: edu.umass.TestDataService
Name: edu/umass/TestDataService/Version.class
Class-Path: lib/colt.jar

当我从运行Red Hat Linux的VMWare shell运行代码时,我得到了这个例外:

[root@localhost] java -jar app.jar

Hello World DAI!
Exception in thread "main" java.lang.NoClassDefFoundError: cern/jet/random/engine/RandomSeedGenerator
at edu.umass.TestDataService.main (Unknown Source)
Caused by: java.long.ClassNotFoundException: cern.jet.random.engine.RandomSeedGenerator

正如最后一点,一切似乎都在使用eclipse的Windows上正常工作,但似乎没有什么能在虚拟机上运行。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您是否在VM上安装了应用程序所需的jar文件?

您是否正确配置了CLASS_PATH?

答案 1 :(得分:0)

我怀疑jvm或vm存在问题。问题出在你如何运行这个类。具体如何设置类路径。试试这个:

导航到您放置colt.jar的位置。通过键入pwd获取当前工作目录。使用此命令使用colt.jar的绝对路径构造run命令。

所以最终你应该运行(从包含你的jar的目录)这样的东西:

java -cp /the/full/path/to/lib/colt.jar -jar app.jar

一旦你完成了这项工作,你就可以尝试找出正确的相对路径。然后你就可以了

java -cp a/relativel/path/to/lib/colt.jar -jar app.jar