當前位置:首頁 » 尋物指南 » idea為什麼找不到主要類別

idea為什麼找不到主要類別

發布時間: 2022-07-03 21:18:28

❶ intellij IDEA為什麼我代碼編譯的時候沒有問題 但是maven打包的時候報錯找不到類代碼中都import過了啊

兩者配置的CLASSPATH(Maven的依賴),相同嗎

❷ 為什麼用idea寫scala程序總顯示找不到主類

這個問題我解決了,在設置SparkConf()的時候,需要把本機生成的JAR包路徑進行制定,如:valconf=newSparkConf().setAppName("SogouResult").setMaster("spark://master:7077").setJars(List("D:\\IDEAworkspace\\helloSpark\\out\\artifacts\\helloSpark_jar\\helloSpark.jar"))

❸ idea里寫上包名就會提示無法載入主類,不寫就沒事是什麼原因

找不到主類是因為classpath配置錯誤。
是環境變數的問題,看看你的path和classpath是否是正確的,最可能的錯誤是classpath中少了前面少了.;

classpath的配置必須遵循以下規則:

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

❹ idea啟動tomcat錯誤,提示找不到或無法載入主類 #

查看一下當前工程的jdk環境是否正常

❺ IDEA Gradle 找不到或無法載入主類 a.AB Exception in thread "main" java.lang.NoClassDefFoundError

java java.lang.NoClassDefFoundError 的解決辦法

(2008-12-23 01:14:03)轉載▼

標簽:

java

noclass

deffound

解決辦法

以簡單而經典的 「HelloWorld.java」 為例

不含包層次的HelloWorld.java

public class HelloWorld

{

public static void main(String[] args)

{

System.out.println("Hello World!");

}

}

保存在E:javasrc下,命令行下,改變當前路徑到:E:javasrc,使用javac命令編譯:

E:javasrc>javac HelloWorld.java

運行:

E:javasrc>java HelloWorld

屏幕列印出:

Hello World!

初學者常犯的錯誤

1. 運行時,帶了.class後綴

如果你試圖使用如下命令:

E:javasrc>java HelloWorld.class

系統會誤認為你運行的是HelloWorld包下的名為class的類文件,會到系統的CLASSPATH下(一般都包括當前目錄)企圖尋找 HelloWorld.class.class這樣的類,這樣的類當然不存在了;並且也不可能存在,因為class是關鍵字,不能作為一個類的名字。所以 會報如下錯誤信息:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class

2. 文件名大小寫錯誤

對於像Windows這樣的系統,編譯時可以不關心大小寫。比如編譯HelloWorld.java時,也可以使用:

E:javasrc>javac helloworld.java

也可以編譯通過,但產生的類文件仍然是和源文件相符的:HelloWorld.class。

但在運行時一定要注意大小寫,比如試圖使用如下命令運行:

E:javasrc>java helloworld

將報類似於1中的錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong name: HelloWorld)

包含包層次的HelloWorld.java

比如上面的HelloWorld.java修改如下:

package org.javaresearch;

public class HelloWorld

{

public static void main(String[] args)

{

System.out.println("Hello World!");

}

}



編譯時有兩種方法

1. 直接編譯

E:javasrc>javac HelloWorld.java

此時在當前目錄下輸出HelloWorld.class。此時,運行不能使用上面相同的方法,使用:

E:javasrc>java HelloWorld

運行時,出現如下錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/javaresearch/HelloWorld)

從上述錯誤信息你也可以看到,系統可以找到HelloWorld類(因為當前路徑包含在CLASSPATH中,具體為什麼會提示wrong name,有興趣的朋友參見Java語言規范),但這個類屬於org.javaresearch包。所以,你要做的就是按照上述包層次,相應的創建目錄層 次,把上面生成的HelloWorld.class放到E:javasrcorgjavaresearch目錄下。運行(這時候是在包層次的最高層目錄下運行的):

E:javasrc >java org.javaresearch.HelloWorld

系統列印出:

Hello World!

這兒要注意的是,不能使用java orgjavaresearchHelloWorld來運行,此時同樣會出現如下錯誤:

Exception in thread "main" java.lang. (wrong name: org/javaresearch/HelloWorld)

因為類名的書寫是用句點來分割包名的層次的,引用java類庫裡面的類也可以這樣寫:java.util.List 類的全名就是這樣的,我們如果在 import 語句里寫上 import java.util.List;

那麼,就不用寫全名了,直接寫 List list = new ...;java 編譯器就可以知道是 List 什麼類.但是,由於,java.util 這個包 和 java.sql 這個包都有一個 Date 類,所以,如果 同時導入這兩個包,那麼會

導致java 編譯器不知道引用那個類,有兩種解決辦法:

a. 用全名來引用類:java.util.Date date1 = ...;java.sql.Date date2 = ...;

b. 不要導入整個包,只導入所需要的類,如果你同時需要這兩個 Date 類,那麼只能寫全名了,如果

你不是同時需要這兩個類,你可以只導入需要的包:

比如:import java.util.List; import java.sql.Date;這樣就不會沖突,因為編譯器可以十分清楚的區分

這個 Date 類是 java.sql 包中的, java.util 包中的 Date 類根本就沒有導入進來。

這一點,可以按照常理來理解,還是比較好理解的。

2. 使用 -d <directory>編譯選項

是不是覺得上面的編譯方法有點麻煩,能不能自動在當前路徑(或任意指定的路徑)下生成包層次呢?有!使用-d <directory>編譯選項就能做到。

E:javasrc >javac

(其中的點表示當前目錄。d 和 . 之間有空格, .和後面的java文件名之間也有空格)

此時,在當前目錄下就生成了一個orgjavaresearch目錄,並且輸出的.class文件也在裡面。運行:

E:javasrc >java org.javaresearch.HelloWorld

系統列印:Hello World!

如果你想把生成的類文件集中存放在一個目錄中,比如:E:javaclasses下,那麼你首先創建這個目錄,然後編譯時:

E:javasrc >javac -d E:javaclasses HelloWorld.java

就可以把生成的類文件放到E:javaclasses目錄下,並且按照包層次相應的創建目錄路徑。你可以在E:javaclassesorg javaresearch下找到HelloWorld.class文件。此時使用如下命令可以正確運行(注意如果要用到其它類,請在CLASSPATH中 設好):

E:javaclasses >java org.javaresearch.HelloWorld

❻ 關於在IDEA中使用maven的運行test目錄下的main方法無法找到類的

  • pom.xml 報錯先調試好

  • 測試類需要繼承TestCase

  • 編譯後 arget est-classes下面要有class和測試需要的資源文件,就需要在pom.xml中加

    <build><testResources><testResource><directory> src/main/resources</directory><filtering>true</filtering></testResource></testResources></build>

❼ idea出現這種情況 junit一直提示找不到class

ass Book {
public String name;
public String author;
private int availNum;

public Book() {
this("", "", 0);
}

public Book(String name, String author, int availNum) {
this.name = name;
this.author = author;
this.availNum = availNum;
}

public int getAvailNum() {
return availNum;
}

public void setAvailNum(int availNum) {
this.availNum = availNum;
}

public boolean subscribe() {
if (availNum > 0) {
availNum--;
return true;
}
return false;
}

public boolean cancelSubscribe() {
availNum++;
return true;
}
}

/** Book類的單元測試類 */
import junit.framework.TestCase;

public class TestBook extends TestCase {

public void testBook() {
Book book = new Book("Thinking in Java", "Bruce Eckel", 3);
assertEquals(true, book.subscribe());// 第一次預借,應該是成功的
assertEquals(2, book.getAvailNum());// 此時的可預借數是2
assertEquals(true, book.cancelSubscribe());// 取消預借,應該是成功的
assertEquals(3, book.getAvailNum());// 此時的可預借數是3
book.setAvailNum(0);// 將可預借數設為0
assertEquals(false, book.subscribe());// 此時預借,應該是不成功的
}

public static void main(String[] args) {
junit.textui.TestRunner.run(Book.class);
}
}
上面的測試類可以不要main函數,直接在集成開發環境里用JUnit執行單元測試。

❽ IntelliJ IDEA 找不到或無法載入主類 com.company.Main到底怎麼弄

如果是直接通過dos命令的話,就需要先編譯在運行。
如果是在開發工具裡面的話,完全沒問題。建議你用eclipse運行一下。
就代碼本身而言是沒有問題的,看是否是其他的問題。

❾ idea找不到或無法載入主類,看圖,百度的方法沒有解決,求大神。

藉助idea找主類,需要嵌入jdk。
測試jdk找不到或無法載入主類。

嵌入需要安裝以後,正確配置環境變數。

❿ java運行顯示「找不到或無法載入主類」!

該如何解決呢?解決辦法如下:

1.由於是在運行階段出現的問題,那麼可能是環境變數配置不當的問題,即可能是classpath路徑配置錯誤,而導致.class文件無法載入。那麼此時你可以檢查是否配置好classpath路徑,一般來說classpath路徑配置如下:

.;%java_home%lib;%java_home%lib ools.jar; (注意前面的 . 以及 ; 缺一不可)

其中.表示當前路徑,;表示分隔符。

2.如果你試過了很多次,classpath也配置對了,依舊出現這個錯誤,注意你使用的測試代碼,是否在某一個包名的下面;

比如說如下測試代碼:

在文件所在的當前目錄下,運行javac TestPlusPlus.java編譯成功,生成TestPlusPlus.class文件,這個時

候,你用javaTestPlusPlus想運行程序,總會出現」找不到或無法載入主類「的錯誤。這個時候要注意,

之所以找不到,是因為TestPlusPlus在HelloWorld包名的下面。

解決辦法:

1.去掉 」packageHelloWorld;「 重新用javac 編譯TestPlusPlus.java,再運行javaTestPlusPlus就可以了。

2.新建一個包名一樣的文件夾,在本例中,為建立一個HelloWorld的文件夾,把TestPlusPlus.java文件移到該目錄下。

然後在HelloWorld文件夾的平級下,打開DOS命令窗口,運行javacHelloWorld/TestPlusPlus.java編譯程序,

運行javaHelloWorld/TestPlusPlus(或者javaHelloWorld.TestPlusPlus也可以),則可以運行含有包名的java程序。

注意:包名不要含有'.'(點),' '(空格)等特殊符號,這樣的話命令行無法判斷包名與java程序名的分割點在哪裡,

從而還是找到或者無法載入主類。

原理說明:

java程序運行class文件,對於有包名的類,java把包名當成文件夾處理."包名+類名"相當於"文件夾目錄+類名"來尋找類。

熱點內容
上海58二手車為什麼便宜 發布:2024-09-23 04:32:32 瀏覽:352
晚上為什麼會聽到按鍵的聲音 發布:2024-09-23 04:31:21 瀏覽:273
為什麼微博要手機驗證碼登錄 發布:2024-09-23 04:20:49 瀏覽:203
為什麼前腿肉賣得便宜 發布:2024-09-23 04:13:51 瀏覽:894
為什麼能上網就是不能打開軟體 發布:2024-09-23 04:07:50 瀏覽:240
為什麼淘寶熟蛋這么便宜 發布:2024-09-23 03:59:15 瀏覽:190
感冒為什麼眼睛痛頭痛 發布:2024-09-23 03:59:13 瀏覽:461
男人為什麼比女的腳臭 發布:2024-09-23 03:47:07 瀏覽:756
為什麼拔罐顏色發青 發布:2024-09-23 03:47:06 瀏覽:616
小米手機為什麼卡住就死機了 發布:2024-09-23 03:46:22 瀏覽:321