簡體   English   中英

找不到主要類別…罐子或清單

[英]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不能。 任何幫助都會很棒。

  1. 按照約定,類名必須以大寫字母開頭,將bg更改為Bg
  2. Bg必須是public,因此將類型定義更改為public class Bg
  3. 嘗試選擇一個更具描述性的類型名稱, 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.

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