【问题标题】:Package not found error when compiling with javac -d flag?使用 javac -d 标志编译时找不到包错误?
【发布时间】:2016-01-03 13:08:19
【问题描述】:

我正在尝试编译一个名为 BeerSelect.java 的 Servlet 类。 它从包中导入模型类 BeerExpert.java, 问题是在编译时我得到一个 package not found 错误

我的目录结构如下

我首先编译了我的 BeerExpert.java 如下

去了beerV1

javac -d classes /src/com/example/model/BeerExpert.java

如上所示,.class 文件会自动在正确的路径中创建

现在再次从beerV1 目录我尝试将 BeerSelect.java 编译为 ...

javac -classpath ~/tomcat/lib/servlet-api.jar -d classes/ src/com/example/web/BeerSelect.java 

它会抛出这个错误

src/com/example/web/BeerSelect.java:2: error: package com.example.model does not exist
import com.example.model.*;
^

两个java文件

BeerSelect.java

package com.example.web;
import com.example.model.*;
import javax.servlet.*;
import java.io.*;
import java.util.*;
import javax.servlet.http.*;

public class BeerSelect extends HttpServlet
{
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException
    {

    response.setContentType("text/html");

    PrintWriter out=response.getWriter();

    String beerColor=request.getParameter("color");

    BeerExpert expert=new BeerExpert();
    ArrayList brands=expert.getBrands(beerColor);


    for(String brand:brands)
    {
        out.println("Try  "+brand+"<br>");
    }

        }//post ends

    }//class ends

BeerExpert.java

package com.example.model;

import java.util.*;

public class BeerExpert {

    public ArrayList<String> getBrands(String color)
    {
        ArrayList<String> brands=new ArrayList<>();

        if(color.equals("Dark"))
        {
            brands.add("Dark fantasy");
            brands.add("Dark Warrior");
        }
        else//light
        {
            brands.add("Light as a feather");
            brands.add("light as a macbook");
        }

        return brands;
    }
}

为什么看不到包裹? 请帮忙:(

【问题讨论】:

  • 你需要在你的类路径中添加 com.example.model.*
  • 你能告诉我怎么做吗? classes/com.example.model 或 src/com/example/model ,因为我已经给出了我使用的目录结构和命令,你能告诉我确切的命令吗
  • @Harinder Oops 现在想通了:P,我会自己更新答案
  • 很好,你想通了。

标签: java packages javac


【解决方案1】:

哎呀,这是一个愚蠢的错误

javac 必须知道去哪里找包

所以 将位置添加到类路径就可以了

我用过

javac -classpath ~/tomcat/lib/servlet-api.jar:**classes** -d classes/ src/com/example/web/BeerSelect.java 

现在工作:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多