[英]Could not find main class…jar or manifest
我對編程非常陌生,但是我正在嘗試學習。 我學到了很多東西,但是有些概念似乎籠罩着我。 好像當您像我一樣學習並且搜索問題時,您會得到許多不同的答案。 有時,答案的措辭方式可能會使初學者感到困惑。 無論如何,這是我的問題。
我創建了一個非常簡單的程序,它將對牆上的CMU塊進行基本計算。 我使用了JOptionPane而不是控制台。 我在記事本中編寫了代碼,然后將其另存為.java文件(blocktestgui.java)。 然后,我使用命令“ javac blocktestgui.java”對其進行編譯,以獲取“ bg.class”文件。 我可以使用“ java bg”從cmd運行該程序,並且效果很好。 我真正的問題來自jar文件。 我用Main-Class創建了manifest.txt文件:bg,然后是空行。 然后,我使用“ jar cvmf manifest.txt CMU.jar bg.class”,得到一個jar文件。 然后,每當我運行它(使用cmd或雙擊)時,都會出現“找不到主類”錯誤。
這是我所擁有的:
我的Java文件:
import javax.swing.JOptionPane;
class bg {
public static void main(String[] args) {
String firstNumber, secondNumber;
double number1, number2, sum;
firstNumber = JOptionPane.showInputDialog(
"Enter wall length in decimal feet:",
JOptionPane.INFORMATION_MESSAGE);
secondNumber = JOptionPane.showInputDialog(
"Enter wall height in decimal feet:",
JOptionPane.INFORMATION_MESSAGE);
number1 = Double.parseDouble(firstNumber);
number2 = Double.parseDouble(secondNumber);
sum = (number1 * number2) / 0.88;
JOptionPane.showMessageDialog(null, "Total Blocks are " + sum,
"Results", JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
我的jar包含我的bg.class文件,這就是清單文件的樣子:
Manifest-Version: 1.0
Created-By: 1.7.0_02 (Oracle Corporation)
Main-Class: bg
我不知所措,因為我的java文件可以工作,但是jar不能。 任何幫助都會很棒。
bg
更改為Bg
。 Bg
必須是public,因此將類型定義更改為public class Bg
。 Bg
不會告訴我有關其定義的類型的任何信息。 而且這是默認清單。 。 。 創建JAR文件時,它將自動接收默認清單文件。 存檔中只能有一個清單文件,並且該清單文件始終具有路徑名
META-INF / MANIFEST.MF
創建JAR文件時,默認清單文件僅包含以下內容:
清單版本:1.0創建者:1.7.0_06(Oracle Corporation)
這些行顯示清單的條目采用“標頭:值”對的形式。 標題名稱與其值之間用冒號分隔。 默認清單符合清單規范的1.0版,並由JDK的1.7.0_06版創建。
清單還可以包含有關歸檔文件中打包的其他文件的信息。 清單中應確切記錄哪些文件信息取決於您打算如何使用JAR文件。 默認清單沒有假設它應該記錄關於其他文件的哪些信息。
可能有幾件事發生,但是打開jar並確認清單稱為manifest.mf(而不是.txt),並且清單位於META-INF目錄中。 Jar或多或少是zip文件,因此如果您在打開它時遇到麻煩,只需添加.zip擴展名即可快速而又骯臟地訪問它(完成后將其重命名)。
類名和源文件名必須相同是Java的“規則”(因此class bg
應位於文件名bg.java
。您還沒有這樣做。
順便說一句,我無法弄清楚如何得到一個名為bg.class
的文件,因為javac
命令輸出的.class file
的基本名稱與輸入的.java
文件的名稱相同(在您的情況下為blocktestgui.java
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.