0

我在 Windows Server 上使用 Apache Tomcat 5.5 Web 服务器(我很陌生)。

我编写了一个名为 HRCapture 的类,其中包含一个名为 HR 的类:

package edu.usf.cse.uguard;
import java.util.*;

 public class HRCapture
{
    class HR
    {
        int heartRate;
        Date timeStamp;

        HR (int hr, Date ts)
        {
            heartRate = hr;
            timeStamp = ts;
        }

        HR()
        {

        }
    }
    public HRCapture()
    {
        user = "";
        activity = "";
        typeOfTravel = "";
    }
    public void newHR(int hr, Date ts)
    {
        hrArray.add( new HR(hr, ts));
    }
    public String user, activity, typeOfTravel;
    private ArrayList<HR> hrArray = new ArrayList<HR>();
    double longitude = 0.0;
    double latitude = 0.0;  
}

我用 javac 编译它(它给了我“HRCapture.class”和“HRCapture$HR.class”),我把它放在:“C:\Program Files\Apache Software Foundatioin\Tomcat5.5\webapps\ROOT\WEB- INF\classes\edu\usf\cse\uguard”。

在另一个文件中,我试图初始化一个 HRCapture 类型的变量:

<%@ page language="java" %>
<%@ page import="edu.usf.cse.uguard.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="org.json.simple.JSONObject" %>
<%@ page import="org.json.JSONArray" %>
<%@ page import="java.util.*" %>
<%@ page import="com.google.gson.*" %>
<%@ page import="com.google.gson.Gson" %>

<%
    HRCapture hrc = new HRCapture();
    if (request.getParameter("id") == null)
    {
    }
    else
    {
        String input = request.getParameter("id");
        Gson gson = new Gson();
        try
        {
            //hrc = gson.fromJson(input , HRCapture.class);
            //out.println(input);
            out.println("Success");
        }
        catch (JsonSyntaxException ex)
        {
        }
        catch (JsonParseException ex)
        {
        }
        catch (Exception e)
        {
        }
    }
%>

但是,当我访问网页时,我收到一条错误消息,提示“构造函数 HRCapture() 不可见”,即使我在 HRCapture 类中将构造函数设置为 public。这个错误发生在我有的线上HRCapture hrc = new HRCapture();

我都试过了: <%@ page import="edu.usf.cse.uguard.*" %> 和 <%@ page import="edu.usf.cse.uguard.HRCapture" %> 我得到了相同的结果...

我的导入语句不正确吗?我是不是把构造函数搞砸了?

任何帮助,将不胜感激!

4

2 回答 2

1

您粘贴的 HRCapture 没有声明任何包。

仅将 .class 文件复制到 classes 目录中的给定目录不会将其放入该包中。您应该在 java 文件中添加一个包声明(并将其放在源代码树中的正确目录中)并再次编译它并将其放在类目录中的正确位置。

当然,这假设您不只是在代码示例中省略了包声明。

于 2013-04-25T23:02:22.023 回答
0

因此,经过大量测试后,问题似乎是 Tomcat 出于某种原因缓存了我的类文件,而不是始终为我提供最新的类文件。当我重新启动 Tomcat 服务时,它可以正常工作。

编辑:我会将此标记为答案,但我不能 2 天。

于 2013-04-26T00:12:40.520 回答