Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类路径问题_Java_Compiler Construction_Classpath - Fatal编程技术网

Java类路径问题

Java类路径问题,java,compiler-construction,classpath,Java,Compiler Construction,Classpath,我已经编译过,现在正在尝试使用ie目录中的以下命令从OSX和Fendora中的终端运行程序: java -cp classes ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test java -cp . ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test java ie.moguntia.webcrawler.Psuckerhttp://www.wikip

我已经编译过,现在正在尝试使用ie目录中的以下命令从OSX和Fendora中的终端运行程序:

java -cp classes ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
java -cp . ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
java ie.moguntia.webcrawler.Psuckerhttp://www.wikipedia.org 测试

但是,我得到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: ie/moguntia/webcrawler/Psucker
Caused by: java.lang.ClassNotFoundException: ie.moguntia.webcrawler.Psucker
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
我以前没有运行过使用命令行中的包的应用程序,因此无法找出错误

我尝试使用
export classpath=。
设置类路径,以便将当前目录添加到类路径中

目录结构如下:


ie/moguntia/webcrawler/
如果您从ie目录之外运行它,它应该可以工作


注意,通常不建议依赖
CLASSPATH
环境变量;相反,使用
-cp
开关将类路径显式地放在hte命令行上

如果您从ie目录之外运行它,它应该可以工作


注意,通常不建议依赖
CLASSPATH
环境变量;相反,根据编译类的位置,使用
-cp
开关将类路径显式地放在命令行上,您需要在java命令中包含此位置,例如,如果它们位于
classes
目录中:

java -cp classes ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
java -cp . ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
或者如果它们位于当前目录中:

java -cp classes ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
java -cp . ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
或者只是

java ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
下面是我如何运行这个(解压、cd到目录、编译、查找类、运行):


根据编译类的位置,您需要在java命令中包含此位置,例如,如果它们位于
classes
目录中:

java -cp classes ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
java -cp . ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
或者如果它们位于当前目录中:

java -cp classes ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
java -cp . ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
或者只是

java ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
下面是我如何运行这个(解压、cd到目录、编译、查找类、运行):



CWD是否有必需的jar?没有必需的jar文件。我应该注意,这在Windows上运行良好。CWD是否具有所需的jar?没有所需的jar文件。我应该注意,这在Windows上运行良好。我已将目录结构添加到问题中。检查类名-它是
PSucker
,带大写字母s。我已更改了示例。很抱歉,这是一个打字错误,我一直在终端上运行PSucker。您能确保类文件实际位于ie/moguntia/webcrawler目录中吗?我将下载的包解压缩到multiweb文件夹中,然后可以运行命令
javaie.moguntia.webcrawler.PSuckerhttp://www.wikipedia.org 从那里测试
,没有问题。从同一目录运行时,我不必提供任何类路径。
find的输出是什么-名称*.class
?我已将目录结构添加到问题中。请检查类名-它是带大写字母s的
PSucker
。我已更改了示例。很抱歉,这是一个打字错误,我一直在终端上运行PSucker。您能确保类文件实际位于ie/moguntia/webcrawler目录中吗?我将下载的包解压缩到multiweb文件夹中,然后可以运行命令
javaie.moguntia.webcrawler.PSuckerhttp://www.wikipedia.org 从那里测试
,没有问题。从同一目录运行时,我不必提供任何类路径。
find的输出是什么-name*.class
?我试着从上面的
ie
目录运行它,但没有用。@Ash:当然,它永远不会从内部运行。但是,如果修复不起作用,那可能是文件访问权限的问题。我试着从上面的
ie
目录运行它,但没有用。@Ash:好吧,它永远不会从内部运行,这是肯定的。但是,如果修复这一问题无济于事,那可能是文件访问权限的问题。