Java 将包安排到';反向URL表示法';:无法运行主类

Java 将包安排到';反向URL表示法';:无法运行主类,java,Java,我安排我的课程改变URL符号(newb对一个挑剔的软件包的反应)。我的主页中有数独目录。它在binaries和我的源代码中保存了“Drools Planner”的二进制软件包。目录是这样排列的 jesvin@Jesvin-Technovia:~/dev/drools/sudoku$ ls src/main/java/in/co/technovia/sudoku/ App.class App.java~ helloworld.class helloworld.java~ App.java

我安排我的课程改变URL符号(newb对一个挑剔的软件包的反应)。我的
主页中有
数独
目录。它在
binaries
和我的源代码中保存了“Drools Planner”的二进制软件包。目录是这样排列的

jesvin@Jesvin-Technovia:~/dev/drools/sudoku$ ls src/main/java/in/co/technovia/sudoku/
App.class  App.java~  helloworld.class  helloworld.java~
App.java   domain     helloworld.java   solution
我的类路径指向“Drools Planner”的
和上述
二进制文件

jesvin@Jesvin-Technovia:~/dev/drools/sudoku$ export | grep CLASSPATH
declare -x CLASSPATH=".:/home/jesvin/dev/drools/sudoku/binaries/*"

App.java
的第一行是:
package in.co.technovia.sudoku

我尝试使用完全限定的包名在源代码的根目录中运行
App
类:

jesvin@Jesvin-Technovia:~/dev/drools/sudoku$ java in.co.technovia.sudoku.helloworld
Exception in thread "main" java.lang.NoClassDefFoundError: in/co/technovia/sudoku/helloworld
Caused by: java.lang.ClassNotFoundException: in.co.technovia.sudoku.helloworld
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: in.co.technovia.sudoku.helloworld. Program will exit.


我的问题是Java的基本问题:如何运行
Java
命令或设置
CLASS\u路径
,使包运行正常?

类文件与Java文件(在您的情况下)位于同一文件夹中,因此您需要使用

CLASSPATH=".:/home/jesvin/dev/drools/sudoku/src/main/java"
然后,要执行该类,请使用您在问题中发布的命令,它应该可以工作

当您的代码正确编译到
binaries
目录时,您可以将此目录添加到类路径中(最后不要使用“*”,因为这样会添加所有子目录!)。然后,检查
内部是否有名为
的目录,因为目录结构必须反映包结构


此外,我希望您遵守Java命名约定,始终以大写字母开头类名

类文件与java文件(在您的示例中)位于同一文件夹中,因此您需要使用

CLASSPATH=".:/home/jesvin/dev/drools/sudoku/src/main/java"
然后,要执行该类,请使用您在问题中发布的命令,它应该可以工作

当您的代码正确编译到
binaries
目录时,您可以将此目录添加到类路径中(最后不要使用“*”,因为这样会添加所有子目录!)。然后,检查
内部是否有名为
的目录,因为目录结构必须反映包结构


此外,我希望您遵守Java命名约定,始终以大写字母开头类名

你是说
helloworld
?我是从别处抄来的。我确实遵循了命名惯例的例子是的,我的意思是,它首先让我感到困惑——这似乎是一个糟糕的hello world示例^^你是说
helloworld
?我是从别处抄来的。我确实遵循了命名惯例的例子是的,我的意思是,它首先让我感到困惑——这似乎是一个糟糕的hello world示例^^