如下两个类
PackageTest.java
import com.horstmann.corejava.*;
// the Employee class is defined in that package
import static java.lang.System.*;
/**
* This program demonstrates the use of packages.
* @author cay
* @version 1.11 2004-02-19
* @author Cay Horstmann
*/
public class PackageTest
{
public static void main(String[] args)
{
// because of the import statement, we don't have to use com.horstmann.corejava.Employee here
Employee harry = new Employee("Harry Hacker", 50000, 1989, 10, 1);
harry.raiseSalary(5);
// because of the static import statement, we don't have to use System.out here
out.println("name=" + harry.getName() + ",salary=" + harry.getSalary());
}
}
Employee.java
///////////
package com.horstmann.corejava;
// the classes in this file are part of this package
import java.util.*;
// import statements come after the package statement
/**
* @version 1.10 1999-12-18
* @author Cay Horstmann
*/
public class Employee
{
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
// GregorianCalendar uses 0 for January
hireDay = calendar.getTime();
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public Date getHireDay()
{
return hireDay;
}
public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}
private String name;
private double salary;
private Date hireDay;
}
也就是 第一个类调用了Employee这个类,这个类定义在
package com.horstmann.corejava
在window环境中,我用命令行编译
javac PackageTest.java
报一下错误,是什么原因
PackageTest.java:1: package com.horstmann.corejava does not exist
import com.horstmann.corejava.*;
^
PackageTest.java:17: cannot find symbol
symbol : class Employee
location: class PackageTest
Employee harry = new Employee("Harry Hacker", 50000, 1989, 10, 1);
^
PackageTest.java:17: cannot find symbol
symbol : class Employee
location: class PackageTest
Employee harry = new Employee("Harry Hacker", 50000, 1989, 10, 1);
^
3 errors
13 个解决方案
#1
在你的PackageTest.java同一级目录下建个目录com\horstmann\corejava 将Employee.java放在该目录下,先编译Employee.java,在编译PackageTest.java。这样操作一下吧!
#2
编译还有包声明语句的java源程序文件的格式是:
javac -d 路径名 java源程序文件名
javac -d 路径名 java源程序文件名
#3
楼主正在看《Java核心技术》?楼上的太麻烦了,楼主可以试一下javac -d . PackageTest.java,编译器可以自动按照包声明给你建立目录结构。
#4
#5
楼上的不可以啊,你确定你的做法是试验过的吗?
#6
前面回复的没有可以试验通过的。
#7
确认一下com.horstmann.corejava,这个com这个文件和PackageTest.java在同一个文件下吗?
我使用正常啊
E:\Editplus>javac PackageTest.java
E:\Editplus>java PackageTest
name=Harry Hacker,salary=52500.0
我使用正常啊
E:\Editplus>javac PackageTest.java
E:\Editplus>java PackageTest
name=Harry Hacker,salary=52500.0
#8
两个类是定义同一个package里吗?那为什么还要import com.horstmann.corejava.*;
直接package com.horstmann.corejava;不就可以啦。不在同一个包里,这个程序是正确的啊
直接package com.horstmann.corejava;不就可以啦。不在同一个包里,这个程序是正确的啊
#9
类包的问题,自己找出来,得更多。
#10
不在同一个文件夹下
目录机构
c:\Package\PackageTest.java
c:\Package\com\horstmann\corejava\Employee.java
目录机构
c:\Package\PackageTest.java
c:\Package\com\horstmann\corejava\Employee.java
#11
按照我的理解,我一开始也是以为就应该
javac PackageTest.java就可以了,我认为PackageTest.java会自己去找需要的类,但是不行
我开始以为是程序的问题,但是同样的程序,在eclipse是可以的。
javac PackageTest.java就可以了,我认为PackageTest.java会自己去找需要的类,但是不行
我开始以为是程序的问题,但是同样的程序,在eclipse是可以的。
#12
eclipse是可以自动编译*.java程序的。
#13
javac -d . PackageTest.java
就可以了,顺便会编译 Employee 这个类。
就可以了,顺便会编译 Employee 这个类。
#1
在你的PackageTest.java同一级目录下建个目录com\horstmann\corejava 将Employee.java放在该目录下,先编译Employee.java,在编译PackageTest.java。这样操作一下吧!
#2
编译还有包声明语句的java源程序文件的格式是:
javac -d 路径名 java源程序文件名
javac -d 路径名 java源程序文件名
#3
楼主正在看《Java核心技术》?楼上的太麻烦了,楼主可以试一下javac -d . PackageTest.java,编译器可以自动按照包声明给你建立目录结构。
#4
#5
楼上的不可以啊,你确定你的做法是试验过的吗?
#6
前面回复的没有可以试验通过的。
#7
确认一下com.horstmann.corejava,这个com这个文件和PackageTest.java在同一个文件下吗?
我使用正常啊
E:\Editplus>javac PackageTest.java
E:\Editplus>java PackageTest
name=Harry Hacker,salary=52500.0
我使用正常啊
E:\Editplus>javac PackageTest.java
E:\Editplus>java PackageTest
name=Harry Hacker,salary=52500.0
#8
两个类是定义同一个package里吗?那为什么还要import com.horstmann.corejava.*;
直接package com.horstmann.corejava;不就可以啦。不在同一个包里,这个程序是正确的啊
直接package com.horstmann.corejava;不就可以啦。不在同一个包里,这个程序是正确的啊
#9
类包的问题,自己找出来,得更多。
#10
不在同一个文件夹下
目录机构
c:\Package\PackageTest.java
c:\Package\com\horstmann\corejava\Employee.java
目录机构
c:\Package\PackageTest.java
c:\Package\com\horstmann\corejava\Employee.java
#11
按照我的理解,我一开始也是以为就应该
javac PackageTest.java就可以了,我认为PackageTest.java会自己去找需要的类,但是不行
我开始以为是程序的问题,但是同样的程序,在eclipse是可以的。
javac PackageTest.java就可以了,我认为PackageTest.java会自己去找需要的类,但是不行
我开始以为是程序的问题,但是同样的程序,在eclipse是可以的。
#12
eclipse是可以自动编译*.java程序的。
#13
javac -d . PackageTest.java
就可以了,顺便会编译 Employee 这个类。
就可以了,顺便会编译 Employee 这个类。