![](/img/trans.png)
[英]Jenkins : Cannot instantiate class error when executing java testNG project
[英]Error when executing Java code with nested class
新手在這里。 嘗試執行具有嵌套類的 Java 類,但我不斷收到此Error: Could not find or load main class .
Caused by: java.lang.ClassNotFoundException
在我編譯源代碼時,我得到了兩個新的.class文件; ShadowTest$FirstLevel.class和ShadowTest.class 。 當我嘗試執行任何一個時都會出現錯誤。 請幫忙。
這是代碼
public class ShadowTest {
public int x = 0;
class FirstLevel {
public int x = 1;
void methodInFirstLevel(int x) {
System.out.println("x = " + x);
System.out.println("this.x = " + this.x);
System.out.println("ShadowTest.this.x = " + ShadowTest.this.x);
}
}
public static void main(String... args) {
ShadowTest st = new ShadowTest();
ShadowTest.FirstLevel fl = st.new FirstLevel();
fl.methodInFirstLevel(23);
}
}
我嘗試按照以下步驟復制您面臨的問題。
public class ShadowTest { public int x = 0; class FirstLevel { public int x = 1; void methodInFirstLevel(int x) { System.out.println("x = " + x); System.out.println("this.x = " + this.x); System.out.println("ShadowTest.this.x = " + ShadowTest.this.x); } } public static void main(String... args) { ShadowTest st = new ShadowTest(); ShadowTest.FirstLevel fl = st.new FirstLevel(); fl.methodInFirstLevel(23); } }
編譯使用javac ShadowTest.java的ShadowTest.java,創建了兩個類文件
D:\\test> javac ShadowTest.java
D:\\test>目錄
驅動器 D 中的卷是 MonWork
卷序列號為 3A72-52A4
D:\\test 目錄
17-07-2021 13:01 。
17-07-2021 13:01 ..
17-07-2021 13:01 901 ShadowTest$FirstLevel.class
17-07-2021 13:01 529 ShadowTest.class
17-07-2021 13:01 539 ShadowTest.java
3 個文件 1,969 字節
2 目錄 55,102,857,216 字節空閑
在執行ShadowTest類時,使用java ShadowTest命令。 我得到了預期的輸出。
輸出:
D:\\test> java ShadowTest
x = 23
這個.x = 1
ShadowTest.this.x = 0
java命令的輸出及其輸出
為了重現您的問題,我嘗試刪除ShadowTest$FirstLevel.class文件並執行java ShadowTest 。 但沒有得到你得到的確切錯誤。
錯誤:無法找到或加載主類。 引起:java.lang.ClassNotFoundException
*D:\test>del ShadowTest$FirstLevel.class
D:\test>java ShadowTest
Exception in thread "main" java.lang.NoClassDefFoundError: ShadowTest$FirstLevel
at ShadowTest.main(ShadowTest.java:18)
Caused by: java.lang.ClassNotFoundException: ShadowTest$FirstLevel
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more*
請分享您用於編譯和執行該類的完整錯誤消息和命令。
您始終可以使用javac filename命令編譯該類。 然后使用命令java main_class_name執行代碼
javac ShadowTest.java
java ShadowTest
/** 輸出 **/
x = 23
this.x = 1
ShadowTest.this.x = 0
內部類(如果您的類中存在)將被編譯並且類文件將為 ClassName$InnerClassName。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.