Javac编译和执行2个java文件
该程序使用2个文件filter.java编写,其中filter.java是主函数,ClasifiedWord.java是唯一的容器类。我是在eclipse上的windows上写的,但我想在LinuxJavaC编译器上编译它Javac编译和执行2个java文件,java,compilation,terminal,javac,execution,Java,Compilation,Terminal,Javac,Execution,该程序使用2个文件filter.java编写,其中filter.java是主函数,ClasifiedWord.java是唯一的容器类。我是在eclipse上的windows上写的,但我想在LinuxJavaC编译器上编译它 javac filter.java ClasifiedWord.java 运行时没有错误,但当我尝试运行程序时: snowy:Filter$ java filter Exception in thread "main" java.lang.NoClassDefFoundE
javac filter.java ClasifiedWord.java
运行时没有错误,但当我尝试运行程序时:
snowy:Filter$ java filter
Exception in thread "main" java.lang.NoClassDefFoundError: filter
Caused by: java.lang.ClassNotFoundException: filter
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)
Could not find the main class: filter. Program will exit.
snowy:Filter$ javac filter.java ClasifiedWord.java
snowy:Filter$ java filter ClasifiedWord
Exception in thread "main" java.lang.NoClassDefFoundError: filter
Caused by: java.lang.ClassNotFoundException: filter
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)
Could not find the main class: filter. Program will exit.
如何运行该程序?看来汇编还可以。我怀疑我是否在程序中的文件路径上犯了错误。。。。但我认为情况并非如此?
谢谢你的回答 键入以下命令
java -classpath . filter
如果只想键入java过滤器
,请遵循以下指南
- Linux
- 窗户
另外,最后一个命令
java-filter-ClasifiedWord
意味着运行一个程序filter
,并使用字符串ClasifiedWord
作为参数。Roland在注释中是正确的,您应该能够使用java-classpath-filter
运行它。另外,您应该将filter.java更改为filter.java,因为类名(包括包含它们的文件)的标准java约定是大写第一个字母。这看起来可能是您的类路径设置错误(通常你根本不需要这个,但是如果你有它,它应该在列表中包含当前目录的
),或者你正在使用包(错误),或者两者都有。关于类路径问题,请参阅其他答案
如果您正在使用软件包,即文件开头包含一个软件包…;
行,则应根据软件包结构将源文件放入目录结构中。例如,如果您有软件包示例;
,则应在当前目录中有一个示例
目录,其中wo源文件
然后像这样调用编译器和解释器:
javac example/filter.java example/ClasifiedWord.java
java example.filter
(假设
filter
是主类,否则替换其名称。)当前目录是否自动添加到类路径?如果不是,运行java-classpath。filter
可能会有所帮助。拼写说明:您的类可能应该命名为ClassifiedWord
(带有两个s
)。