我有一个返回CPU值的GUI程序,这需要一个外部API。我制作了JAR,但程序不会返回CPU,除非我在netbeans IDE中运行程序。我的问题是如何将API打包到JAR文件中。
private class getCpu extends Thread {
@Override
public void run() {
while(true) {
try {
Sigar sigar = new Sigar();
Cpu cpu = new Cpu();
CpuPerc perc = sigar.getCpuPerc();
DecimalFormat df = new DecimalFormat("###.###");
//df.format(100-(perc.getIdle()*100));
cpuLabel.setText("CPU : "+df.format(100-(perc.getIdle()*100))+"%");
try{Thread.sleep(1000);}catch(Exception e2){}
}catch(SigarException e1){}
catch(Exception e){}
}
}
}
答案 0 :(得分:0)
您的程序无法运行,因为当您从命令行运行程序时,classpath
中没有“外部API ”(并且您获得了ClassDefNotFoundException
)< / p>
要解决此问题,您可以执行以下操作之一:
将外部API jar添加到classpath:
java -cp externalAPI.jar -jar jourProgram.jar
将所有必要的类打包到jar中。有一个很好的maven plugin
它可以将您的所有依赖关系打包到一个jar文件中 - https://maven.apache.org/plugins/maven-assembly-plugin/
答案 1 :(得分:0)
使用sigar的API时,必须将log4j.jar和sigar.jar添加到类路径中。但是你还需要将sigar-amd64-winnt.dll,sigar-x86-winnt.dll和sigar-x86-winnt.lib添加到最终构建的最终文件夹中,否则Sigar将无法正常工作。