我在 Windows 服务器上使用 Apache Tomcat 5.5 网络服务器(我是新手)。
我编写了一个名为 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"%> 我明白了同样的结果...
我的导入语句不正确吗?我是不是搞砸了构造函数?
如有任何帮助,我们将不胜感激!
最佳答案
您粘贴的 HRCapture 没有声明包。
只是将 .class 文件复制到类目录中的给定目录并不会将其放入该包中。您应该将包声明添加到 java 文件(并将其放在源代码树中的正确目录中)并再次编译它并将其放在类目录中的正确位置。
当然,这假设您不只是从代码示例中省略包声明。
关于java - JSP 构造函数不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225638/