簡體   English   中英

Javac編譯和2個Java文件的執行

[英]Javac compilation and execution of 2 java files

該程序用2個文件filter.java編寫-其中是main函數,而ClasifiedWord.java是僅容器類。 我是在eclipse的Windows上寫的,但是想在Linux javac編譯器上進行編譯。

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 filter ,請遵循以下指南。

PS最后一個命令java filter ClasifiedWord意味着運行程序 filter並使用字符串 ClasifiedWord作為參數。

Roland在注釋中是正確的,您應該可以使用java -classpath <folderContainingDotClassFiles> filter運行它。 另外,您應該將filter.java更改為Filter.java,因為類名(包括包含它們的文件)的標准Java約定是大寫第一個字母。

看起來您的CLASSPATH設置有誤(通常根本不需要此設置,但如果有此設置,則該列表應在當前目錄的列表中包含. ),或者您正在使用軟件包(錯誤地),或兩者。 對於類路徑問題,請參閱其他答案。

如果您正在使用軟件包,即您的文件包含一個package ...; 在開始的一行,您應該根據包結構將源文件放在目錄結構中。 例如,如果您有package example; ,您應該在當前目錄中有一個example目錄,並在其中有兩個源文件。

然后像這樣調用編譯器和解釋器:

javac example/filter.java example/ClasifiedWord.java
java example.filter

(這假定filter是主類,否則替換其名稱。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM