如何将API打包到JAR中

时间:2014-02-23 16:50:26

标签: java api jar

我有一个返回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){}
            }
        }
    }

2 个答案:

答案 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将无法正常工作。