Java 将包安排到';反向URL表示法';:无法运行主类
我安排我的课程改变URL符号(newb对一个挑剔的软件包的反应)。我的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
主页中有数独
目录。它在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示例^^