Когда я запускаю java -cp foo.jar MyClass
, я все время получаю сообщение об ошибке:
Error: Could not find or load main class PrimVsKruskal
Caused by: java.lang.ClassNotFoundException: PrimVsKruskal
Но когда я запускаю java -cp foo.jar MyClass.java
, он работает нормально. Это происходило в разных файлах в разных каталогах, и да, я запустил javac -cp foo.jar MyClass.java
для генерации байт-кода .class.
Я также пробовал запустить java -cp foo.jar MyClass.class
(та же ошибка, но с '.class' в конце каждой строки) и убедился, что просто не очень хорошо понимаю команду java
. Когда я удаляю файл MyClass.class и запускаю java -cp foo.jar MyClass.java
, он работает нормально, что, кажется, предполагает, что java
компилирует свой собственный байт-код при запуске с файлом. java, а не просто интерпретирует байт-код. Это правда?
Любая помощь в этом или просто лучшее понимание java
, чем то, что я могу почерпнуть из справочных страниц, будет очень признательна! Я искал в Интернете, но когда мне нужно было искать «java command», ничего подходящего не обнаружилось.
Не уверен, имеет ли это значение, но я использую OpenJDK version "11.0.7" 2020-04-14
на Ubuntu 18.04.4.
Спасибо!
============
Редактировать из-за комментария:
Файл .jar - это algs4.jar из https://algs4.cs.princeton.edu/code/ . Минимальный рабочий пример, который дает мне те же самые ошибки:
import edu.princeton.cs.algs4.*;
public class MyClass{
public static void main(String[] args) {
System.out.println( "I am working! ");
}
}