因此,我有一个软件包“ 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不存在)
答案 0 :(得分:0)
设置您的项目,以便您有一些根目录,这是您项目的主目录。我们称其为/ Users / you / projects / MyCoolProject
在其中创建一个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
使用诸如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程序员的工作方式。