Java错误:找不到或无法加载主类

最近想重新开始学习Coursera上的Algorithms, Part I课程(之前学了第一周就放弃了),顺便这次从Windows换到Linux平台体验下。

因为几乎完全不熟悉Java, 第一个练习作业就有点懵逼,尤其是jar包相关。我第一次做这个的时候很可能也犯了不少错,但是现在忘了,感觉有必要记录一下。

1.导入jar包

网上搜了下,Linux下只需要将jar包路径导入环境变量即可。

课程网站针对不同开发环境下导入jar包的讲解如下,来自Java Algorithms and Clients

我用了这两种方式:

  1. Linux手动导入jar包
    执行export CLASSPATH=/full/path/to/your.jar:$CLASSPATH
  2. VS Code导入jar包
    只要安装插件“Project Manager for Java”, 然后点击Java Projects下面“Referenced Libraries”右侧的加号,然后选择jar文件即可。

2.错误: 找不到或无法加载主类 xxx

中途手动编译Hello World都出错,如下:

1
2
3
4
ubuntu@instance:~/src$ javac HelloWorld.java                              
ubuntu@instance:~/src$ java HelloWorld
错误: 找不到或无法加载主类 HelloWorld
原因: java.lang.ClassNotFoundException: HelloWorld

但是我用VS Code运行程序一切正常,结合网上的一些文章,猜测是环境变量问题。

后来想起,我本来用前面export CLASSPATH=/full/path/to/your.jar:$CLASSPATH命令设置的环境变量,后面发现jar包路径写错了,更正的时候看到”:”后面啥也没有,就把冒号删掉了。

改掉之后一切正常了。正确的环境变量$CLASSPATH:

1
2
ubuntu@instance:~/jar$ echo $CLASSPATH     
/home/ub/jar/algs4.jar: #最后的冒号一定不能删掉

参考资料

Java Algorithms and Clients
包-廖雪峰
vscode找不到或无法加载主类的解决方法Java
运行 java HelloWorld 命令,提示“错误: 找不到或无法加载主类”
如何在Intellij Idea下编译运行《算法》里的程序?