Запуск Java-кода на VMWare со ссылками на внешние файлы JAR - PullRequest
0 голосов
/ 09 мая 2011

Я пытаюсь запустить простой Java-код на VMWare Workstation. У меня есть следующий простой тест Основной файл:

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, и у меня есть файл jar в папке lib.

Я строю проект с помощью ant, и у меня есть следующий файл манифеста, в котором я установил classpath:

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

Когда я запускаю код из оболочки VMWare, которая запускает Red Hat Linux, я получаю следующее исключение:

[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

Точно так же, как последнее замечание, на Windows с Eclipse все работает нормально, но на виртуальной машине ничего не работает. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 09 мая 2011

Я сомневаюсь, что есть проблема с jvm или vm. Проблема будет в том, как вы управляете классом. Конкретно, как вы устанавливаете classpath. Попробуйте это:

Перейдите туда, куда вы поместили colt.jar. Чтобы получить текущий рабочий каталог, введите pwd. Используйте это, чтобы создать команду запуска, используя абсолютный путь к colt.jar.

Так что в конечном итоге вы должны запустить (из каталога, в котором находится ваш 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
0 голосов
/ 09 мая 2011

Вы установили файлы jar, необходимые для вашего приложения, на виртуальные машины?

Правильно ли вы настроили CLASS_PATH?

...