求高人帮我看看这个文件那里出错了

union315 2010-05-04 06:00:23
我在SERVLET引用的时候总是提示找不到下面的CLASS,CLASSPATH设置的没问题

package me.prett.service;

import java.lang.management.ManagementFactory;
import java.net.URL;

import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;

import org.apache.log4j.xml.DOMConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


enum JmxMonitor {

INSTANCE;

private final Logger log = LoggerFactory.getLogger(JmxMonitor.class);

private MBeanServer mbs;
private ClientMonitor ClientMonitor;

private JmxMonitor() {
ClientMonitor ClientMonitor = new ClientMonitor();
mbs = ManagementFactory.getPlatformMBeanServer();
this.ClientMonitor = ClientMonitor;
try {
registerMonitor("me.prett.service", "wuyu",
ClientMonitor);
} catch (MalformedObjectNameException e) {
log.error("Unable to register JMX monitor", e);
} catch (InstanceAlreadyExistsException e) {
log.error("Unable to register JMX monitor", e);
} catch (MBeanRegistrationException e) {
log.error("Unable to register JMX monitor", e);
} catch (NotCompliantMBeanException e) {
log.error("Unable to register JMX monitor", e);
}
}

public static JmxMonitor getInstance() {
return INSTANCE;
}

public void addPool(ClientPool pool) {
ClientMonitor.addPool(pool);
}

public void registerMonitor(String name, String monitorType, Object monitoringInterface)
throws MalformedObjectNameException, InstanceAlreadyExistsException,
MBeanRegistrationException, NotCompliantMBeanException {

String monitorName = generateMonitorName(name, monitorType);
log.info("Registering JMX {}", monitorName);

ObjectName oName = new ObjectName(monitorName);


if (mbs.isRegistered(oName)) {
log.info("Monitor already registered: {}", oName);
return;
}

mbs.registerMBean(monitoringInterface, oName);

registerPerf4J();
}

private void registerPerf4J() {
URL url = getClass().getClassLoader().getResource("hectorLog4j.xml");
if (url == null) {
log.error("Unable to locate hectorLog4j.xml; performance counters will not be exported");
} else {
DOMConfigurator.configure(url);
}
}

private String generateMonitorName(String className, String monitorType) {
StringBuilder sb = new StringBuilder();
sb.append(className);
sb.append(":ServiceType=");
// append the classloader name so we have unique names in web apps.
sb.append(getUniqueClassloaderIdentifier());
if (null != monitorType && monitorType.length() > 0) {
sb.append(",MonitorType=" + monitorType);
}
return sb.toString();
}

private String getUniqueClassloaderIdentifier() {
String contextPath = getContextPath();
if (contextPath != null) {
return contextPath;
}
return "hector";
}

private String getContextPath() {
URL url = getClass().getClassLoader().getResource("/");
if (url != null) {
String[] elements = url.toString().split("/");
for (int i = elements.length - 1; i > 0; --i) {
// URLs look like this: file:/.../ImageServer/WEB-INF/classes/
// And we want that part that's just before WEB-INF
if ("WEB-INF".equals(elements[i])) {
return elements[i - 1];
}
}
}
return null;
}

public ClientMonitor getMonitor() {
return ClientMonitor;
}

}
...全文
165 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2010-05-05
  • 打赏
  • 举报
回复
估计是slf4j惹的祸。

slf4j需要两个包,而且其中一个可能还需要手工修改,如果可能,改成log4j看看,或者在网上搜一下slf4j相关内容。
malujun666 2010-05-05
  • 打赏
  • 举报
回复
添加 JAVA_HOME,设置值为 你的jdk绝对路径
malujun666 2010-05-05
  • 打赏
  • 举报
回复
试试这个 设置一哈环境变量 :
*Windows 2000系统:
右键点击“我的电脑”选择 属性->高级->环境变量
在系统变量中
添加 JAVA_HOME,设置值为 E:\j2sdk1.4.2
添加 CLASSPATH,设置值为 %JAVA_HOME%\jre\lib\rt.jar;. (注意后面的点)
找到 PATH,加入值 %JAVA_HOME%\bin

重新启动,OK!
注:JAVA_HOME的值是你安装JDK的目录,请自行更改。
QQloveSLX 2010-05-05
  • 打赏
  • 举报
回复
拜读中。没见过这样的问题!
dameimm 2010-05-05
  • 打赏
  • 举报
回复
可能是你用错了。email me longyun_52@sohu.com。最好给我留言
union315 2010-05-05
  • 打赏
  • 举报
回复
不是路径的问题,我怀疑还是ENUM的问题,难道TOMCAT5。5不支持ENUM类吗
qgfiybwfn 2010-05-04
  • 打赏
  • 举报
回复
新人来发贴
union315 2010-05-04
  • 打赏
  • 举报
回复
这个我也注意到了,但是我在编译的时候通过,运行的时候也可以,就是写在SERVLET里面的时候不行
whut_lcy 2010-05-04
  • 打赏
  • 举报
回复
没看见class关键字,你用enum代替class来定义类吗。。。

C++中strust与class可以互换,没听说java中enum与class可以互换


修改:把enum用class代替。重新编译

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧