导入语句无效

3

在使用*导入语句时,JVM无法访问用户定义的类。
我的类路径为export CLASSPATH=.:/home/aksharaaaa/Documents/programs/core_java/class_java:

首先,我将Employee.java文件创建为一个包,即.

package com.durgasoft.core;

public class Employee
{

    int eid;
    String ename;
    double esal;

    public Employee(int eid1, String ename1, double esal1)
    {
        eid=eid1;
        ename=ename1;
        esal=esal1;
    }
    public void getEmployeeDetails()
    {
        System.out.println("Employee Details");
        System.out.println("-------------------");
        System.out.println("Eno:"+eid);
        System.out.println("Ename:"+ename);
        System.out.println("ESalary"+esal);
    }
}

为了编译这个文件,我使用了以下命令'javac -d .. Employee.java',然后在class_java文件夹中创建了com/durgasoft/core/Employee.class文件。
然后我只在class_java文件夹中创建了test.java文件,并添加了以下代码。
import com.durgasoft.core.*;

public class test{

    public static void main(String[] args){

        Employee e= new Employee(111, "viay", 3333.333);
        e.getEmployeeDetails();
    }
}  

当我编译test.java文件时,JVM会出现以下错误:

<b>test.java:5: error: constructor Employee in class Employee cannot be applied to given types;
Employee e= new Employee(111, "viay", 3333.333);  
             ^  
required: no arguments  
found: int,String,double  
reason: actual and formal argument lists differ in length  
test.java:6: error: cannot find symbol  
e.getEmployeeDetails();
         ^  
symbol:  method getEmployeeDetails()  
location: variable e of type Employee 2 errors  

如果我在test.java文件中使用全限定名,例如:import com.durgasoft.core.Employee;,那么JVM就能够编译和运行...

2
дЅ жњ‰жІЎжњ‰еЏ¦дёЂдёЄEmployeeз±»зљ„жњєдјљпјџ - Marvin
不,它不只有一个员工文件。 - user3210168
我已经检查过了,但我没有。 - user3210168
你确定在类文件夹中只有一个Employee类吗?你应该尝试删除所有编译的资源,然后重新编译。 - mhlz
你可以打开 Employee.class 文件并检查它是否包含预期的构造函数 - 注意查找类似于 <init>^A^@^W(ILjava/lang/String;D) 的内容。 - Michael Lang
这对我有效。我假设您在class_java文件夹中。使用javac com/durgasoft/core/Employee.java。Employee.class文件将被创建在com/durgasoft/core/文件夹内。然后使用javac test.java。这将在class_java文件夹中创建test.class文件。最后使用java test命令运行程序。完成了。请尝试一下。如果它对您有效,那么我会将其作为答案包含进去。 - aakansha
1个回答

0

看起来你从类路径中选了不同的类。这种情况可能会发生,会让人很困惑。我也遇到过几次这种情况,通常 JWhich 可以帮助解决。它可以告诉你正在使用的确切类。你可以使用实用程序或源代码。它非常小巧简单,我总是在我的项目和代码库中拥有它,并用它消除歧义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接