簡體   English   中英

訪問jar文件時類文件包含錯誤的類錯誤

[英]class file contains wrong class error while accessing jar file

我正在嘗試為我的兩個源代碼 Serial.java 和 DBaccess.java 創建一個 JAR 文件

我這樣做是作為一個學習練習,這些課程什么都不做,它們是虛擬課程。

操作系統 - Windows 10

JDK-GraalVM

我的源代碼清單。(Serial.java)

public class Serial
{

    void open()
    {
        System.out.println("Serial Port Opened - 0");
    }
}

我的源代碼清單。(DBaccess.java)

public class DBaccess
{

    String DBname = "MySerialDB";

    void write()
    {
        System.out.println("Data Written to DB - W");
    }

    void read()
    {
        System.out.println("Data Read from DB - R");
    }
}

我已經使用 javac 將它們編譯為 .class 文件

  • javac DBaccess.java
  • javac Serial.java

我創建了一個文件夾

H:\myclass\com\mydomain\util

並手動將類文件復制到 util 目錄

並創建了一個這種格式的 jar 文件 myjar.jar

H:\myclass>H:\graalvm\bin\jar tf myjar.jar
META-INF/
META-INF/MANIFEST.MF
com/
com/mydomain/
com/mydomain/util/
com/mydomain/util/DBaccess.class
com/mydomain/util/Serial.class

我希望我的源代碼 JMainEntry.java 能夠訪問上述 jar 文件 myjar.jar 中的類

JMainEntry.java

//Main Class of the Program

import com.mydomain.util.*;

public class JMainEntry 
{
    public static void main (String[] Args)
    {
        

        Serial myS = new Serial();
        myS.open();
        
        DBaccess myDB = new DBaccess();

        
        myDB.write();
        myDB.read();
    }
}

當我編譯代碼時

H:\jar-compile>H:\graalvm\bin\javac -cp myjar.jar JMainEntry.java

我收到錯誤

bad class file: myjar.jar(/com/mydomain/util/Serial.class)
    class file contains wrong class: Serial
    Please remove or make sure it appears in the correct subdirectory of the classpath.

在此處輸入圖像描述 我無法理解為什么 javac 會這樣抱怨,有人可以幫忙嗎?

錯誤的類文件:myjar.jar(/com/mydomain/util/Serial.class)

確保您聲明

package com.mydomain.util

com/mydomain/util目錄中所有.java文件的頂部,包括Serial.java 為了更好地理解這一點,請閱讀包。

暫無
暫無

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

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