无法加载主类(Java)

无法加载主类(Java),java,Java,也许这是一个重复的问题,但我就是找不到我要找的答案!我试图在Unix环境中编译和运行java类 我的课程是: package tmp.test; import org.jasypt.registry.AlgorithmRegistry; class Algo { public static void main(String[] args) { System.out.println(AlgorithmRegistry.getAllPBEAlgorithms());

也许这是一个重复的问题,但我就是找不到我要找的答案!我试图在Unix环境中编译和运行java类

我的课程是:

package tmp.test;

import org.jasypt.registry.AlgorithmRegistry;

class Algo {

    public static void main(String[] args) {

        System.out.println(AlgorithmRegistry.getAllPBEAlgorithms());

    }
}
文件位于路径
/tmp/test/
中。现在,我使用以下命令编译该类:

javac -cp jasypt-1.9.3.jar Algo.java
java -cp jasypt-1.9.3.jar Algo
JAR文件位于同一目录中。它编译得很好。但当我使用命令运行类文件时:

javac -cp jasypt-1.9.3.jar Algo.java
java -cp jasypt-1.9.3.jar Algo
我得到一个错误:

错误:找不到或加载主类Algo

我正在执行路径
/tmp/test/
中的所有命令

我试过:

java -cp jasypt-1.9.3.jar tmp.test.Algo

两者都抛出相同的错误

我不确定我做错了什么。起初我认为这是访问问题。因此,我使用
chmod
将所有内容更改为777。一切似乎都很好。你能告诉我这里缺少什么吗?

tl;博士 使用开关
-d
进行编译,然后使用类的完全限定名运行它

按如下方式编译该类:

javac -d . -cp jasypt-1.9.3.jar Algo.java
java -cp jasypt-1.9.3.jar tmp.test.Algo
开关
-d
指定放置生成的类文件的位置,
表示当前目录

按如下方式运行该类:

javac -d . -cp jasypt-1.9.3.jar Algo.java
java -cp jasypt-1.9.3.jar tmp.test.Algo
我正在执行路径
/tmp/test/

这就是问题所在。你需要比tmp高出一级,而不是在里面。然后是命令行

java-cp/path/to/jasypt-1.9.3.jar tmp.test.Algo
应该有用。如果您坚持从类路径内的子目录启动Java,您可以做这件非常做作的事情:

java-cp/path/to/jasypt-1.9.3.jar:../。。tmp.test.Algo

试试tmp.test。Algo@tibetiroka它也试过了,但仍然抛出同样的错误。试着将Algo公开class@tibetiroka不幸的是,这是一样的!:(@Sam-Do作为一个新文件夹中的建议。如果有任何疑问/问题,请随时发表评论。我尝试了它,但它引发了相同的异常。但它让我非常接近。谢谢!我绑定了第一个命令,它引发了相同的错误。在我转到外部目录后。jasypt.jar的路径导致了问题。但是第二个命令w工作做得很好。谢谢。但老实说,
。/..
到底在这里做什么?一点解释就好了。@Sam-“一点解释就好了。”-试着读一下:
表示父目录(就在您现在所在的位置的正上方).
。/..
是父目录。我认为您不仅是编程新手,还是UNIX或Windows命令行新手,不是吗?请耐心等待,了解更多基础知识后,您将了解更多。