簡體   English   中英

Java導入包錯誤

[英]Java import package error

嗨,我正在玩創建Java包。

我在名為admin的文件夾中創建了一個名為Employee的文件包-可以正確編譯。 在此程序包之外,我還有另一個正在導入它的java文件。 這是源代碼。

import java.util.*;
// this works --> import admin.Employee;
import admin.*; // this doesn't

public class Hello {
    public static void main(String[] args) {
        Employee h = new Employee("James", 20000);
        System.out.println(h.getName());
    }
}

奇怪的是,第二個import語句可以正常工作,但是在第三個import語句中

  • 無法訪問Employee
  • 錯誤的類文件: ./Employee.class

我只是使用javac Hello.java進行編譯

員工類在軟件包admin中。 結構是

文件夾“ admin”->包含hello.java文件,其中包含“ Employee.class”和“ Employee.java”。

package admin;
import java.util.*;

public class Employee
{   
private static int nextId;

private int id;
private String name = "";
private double salary;

// static initialization block

static
{
    Random generator = new Random();
    // set nextId to a random number between 0 and 9999
    nextId = generator.nextInt(10000);
}

// object initialization block
{
    id = nextId;
    nextId++;
}

// three overloaded constructors
public Employee(String n, double s)
{
    name = n;
    salary = s;
}

public Employee(double s)
{
    // calls the Employee(String, double) constructor
    this("Employee #" + nextId, s);
}

// Default constructor
public Employee()
{
    // name initialized to ""--see below
    // salary not explicityl set--initialized to 0
    // id initialized in initialization block
}


public String getName()
{
    return name;
}

public double getSalary()
{
    return salary;
}

public int getId()
{
    return id;
}
}
package admin;  

import java.util.*;

public class Employee
{  

Employee.java也應該在目錄admin 例如

./Hello.java  
./admin/Employee.java

在不更改代碼的情況下(不添加包聲明,這是我認為問題的實質),基本解決方法是:

  • 一起編譯兩個類(javac Hello.java admin / Employee.java)
  • 編譯時將admin文件夾包括在類路徑中(帶有.class文件的admin文件夾所在的-cp路徑,假設已被編譯)

當您告訴它import admin.Employee,並且它在同一源文件夾中時,編譯器可以推斷出您想要隱式編譯。 導入admin。*時,需要在命令行上包括.java文件,或者包括.class文件的類路徑,以便對其進行編譯。

暫無
暫無

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

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