Javac编译和执行2个java文件

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

该程序使用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.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
)。