我安排我的班级来反转URL表示法(newb对一个挑剔的包的反应)。我的sudoku
中有home
目录。它在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”binaries
。
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_PATH
以便程序包运行良好?
答案 0 :(得分:3)
类文件与java文件位于同一文件夹中(在您的情况下),因此您需要使用
CLASSPATH=".:/home/jesvin/dev/drools/sudoku/src/main/java"
然后,要执行该类,请使用您在问题中发布的命令,它应该可以正常工作。
当您的代码正确编译到binaries
目录时,您可以将此目录添加到类路径中(最后不要使用'*',因为这会添加所有子目录!)。然后,检查内部是否有名为in
的目录,因为目录结构必须反映包结构。
此外,我想请您遵循Java命名约定并始终使用大写字母启动类名! Java Naming Conventions