Error: Could not find or load main class [duplicate]
Ошибка: не удалось найти или загрузить основной класс [дубликат]
У меня возникли проблемы с компиляцией и запуском моего Java-кода, предназначенного для того, чтобы позволить мне взаимодействовать Java с общим объектом для Vensim, пакета имитационного моделирования.
java -cp ./apache-log4j-1.2.16/log4j-1.2.16.jar:./vensim.jar SpatialModel vars
Я получаю следующую ошибку: "Ошибка: не удалось найти или загрузить основной класс SpatialModel ". Мой SpatialModel.java код действительно содержит метод 'main' (ниже), поэтому я не уверен, в чем проблема - кто-нибудь, пожалуйста, может мне помочь? Спасибо.
if(libName == null || libName.trim().equals("")) { log.error("Vensim library name has to be set with -D" + DLL_LIBNAME_PARAM); thrownewSpatialException("Vensim library name has to be set with -D" + DLL_LIBNAME_PARAM); }
if(modelPath == null || modelPath.trim().equals("")) { log.error("Model path has to set with -D" + MODEL_PATH_PARAM); thrownewSpatialException("Model path ahs to be set with -D" + MODEL_PATH_PARAM); }
for (inti=0; i < VENSIM_CONTEXT_CREATION_MAX_FAILURE_COUNT && vh == null; i++) { try { log.info("creating new vensim helper\n\tdll lib: " + libName + "\n\tmodel path: " + modelPath); vh = newVensimHelper(libName, modelPath); } catch (Throwable e) { log.error("An exception was thrown when initializing Vensim, try: " + i, e); } } if (vh == null) { thrownewSpatialException("Can't initialize Vensim"); }
Вы должны убедиться, что вы добавили местоположение вашего .class файла в свой classpath. Итак, если он находится в текущей папке, добавьте . в свой classpath. Обратите внимание, что разделителем пути к классу Windows является точка с запятой, т.е. ;.
приводит к Error: Could not find or load main class TheClassName. Это связано с тем, что он должен вызываться с полным именем:
java -classpath . thepackagename.TheClassName
И этот thepackagename каталог должен существовать в пути к классу. В этом примере ., означающий текущий каталог, представляет собой полный путь к классу. Следовательно, этот конкретный пример должен быть вызван из каталога, в котором thepackagename существует.
Чтобы было понятно, имени этого класса нет TheClassName, это thepackagename.TheClassName. Попытка выполнить TheClassName не работает, потому что не существует класса с таким именем. Во всяком случае, не в текущем пути к классу.
Наконец, обратите внимание, что выполняется скомпилированная версия (.class), а не версия исходного кода (.java). Отсюда “ПУТЬ к КЛАССУ”.
Ответ 3
Вы можете попробовать эти два варианта, когда получаете сообщение об ошибке: "не удалось найти или загрузить основной класс"
Если файл вашего класса сохранен в следующем каталоге с HelloWorld именем программы d:\sample
java -cp d:\sample HelloWorld
java -cp . HelloWorld
Ответ 4
Я полагаю, вам нужно добавить текущий каталог в путь к классу Java
java -cp .:./apache-log4j-1.2.16/log4j-1.2.16.jar:./vensim.jar SpatialModel vars