在Java

时间:2018-09-10 11:20:58

标签: java import

因此,我有一个软件包“ com ”,它由两个子软件包“ Common ”和“ Model1 ”组成。 Model1包含一个要在 Servlet2 类中导入的类 Model ,该类位于 Common 包中。我先编译了 Model 类,但仍然很好,但是 Servlet2 类却没有,并出现了一个错误,指出“ 包com.Model1不存在”

这是Model类:

 package com.Model1;
    import java.util.*;
   **public** class Model{
        public ArrayList<String> getBrands(String color){
            ArrayList<String> brands=new ArrayList<String>();
            if(color.equals("amber")){
                brands.add("Jack Amber");
                brands.add("Red Moose");
            }
            else{
                brands.add("Jail Pale Ale");
                brands.add("Gout Stout");
            }
            return brands;
        }
    }

这是Servle2类:

package com.Common;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.Model1.Model;
public class Servlet2 extends HttpServlet{
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException{
        res.setContentType("text/html");
        PrintWriter out=res.getWriter();
        out.println("Coffee selection advice<br>");
        String c=req.getParameter("color");
        Model m=new Model();
        ArrayList result=m.getBrands(c);
        out.println("<br>Got coffee color "+c);
        Iterator it=result.iterator();
        while(it.hasNext()){
            out.println("<br> Try: "+it.next());
        }
    }
}

我似乎无法弄清楚如何解决这个问题。 编辑:意识到默认修饰符是限制性的,但即使公开它似乎也不起作用。

我正在使用notepad ++,希望它可以作为“最小,完整和可验证”的示例:

package com.common;
import com.model.*;
public class TheClassIWantToImportInto {
public static void main(String[] args){
System.out.println("Testing 1");
TheClassIwantToImport obj=new TheClassIWantToImportInto();
obj.testFunction();
}
}

第二堂课

package com.model;
public class TheClassIWantToImport{
public void testFunction(){
System.out.println("testing function");
}
}

.java文件都位于同一文件夹“ C:\ Program Files \ Java \ jdk1.8.0_161 \ bin”中

按以下顺序使用以下命令: javac -d。 TheClassIWantToImport.java (效果很好) javac -d。 TheClassIWantToImportInto.java (错误:包com.model不存在)

1 个答案:

答案 0 :(得分:0)

  1. 设置您的项目,以便您有一些根目录,这是您项目的主目录。我们称其为/ Users / you / projects / MyCoolProject

  2. 在其中创建一个src / main目录,其中将包含您的源代码。源文件位于与其包声明匹配的目录中。 com.Model1是一个不好的软件包名称,原因有三点。 Convention声明不要以大写字母开头,而Convention声明它们应该代表您的反向网站,否则,至少是项目名称,最后'model1'并不是描述性的。因此,我们改为使用package com.mycompany.coolproject.vehicleModel;。在这种情况下,您的Model类应该位于磁盘上的/Users/you/projects/MyCoolProject/src/main/com/mycompany/coolproject/vehicleModel/Model.java

  3. 使用诸如maven或gradle之类的构建工具来构建您的项目。这比尝试手动使javac在这里做正确的事情要简单得多。如果必须使用Java,请在build中创建目录/users/you/projects/MyCoolProject,确保您位于该目录中,然后尝试:javac -d build -sourcepath src/main src/main/com/mycompany/coolproject/vehicleModel/*.java,请注意,您必须在其中添加路径每次您制作另一个软件包时(为避免这样做,请使用maven或gradle)。

完成此操作后,该错误就会消失(该错误表明javac找不到另一个源文件,因为您的项目尚未正确设置。上述说明导致正确设置了项目, javac / maven / gradle能够根据需要查找所有源文件,这就是几乎所有Java程序员的工作方式。