导入后抛出导致错误的异常(sigar exception)

时间:2016-03-25 17:43:08

标签: java eclipse jar

我创建了一个我想用作外部库的java应用程序。所以我创建一个jar文件并将其导入到另一个项目中。 当我使用我的图书馆时,我打电话

notif.addMachineStat(ip,"Harvester");

声明为

public void addMachineStat(String ip,String computerTitle) throws InterruptedException, SigarException {
        Resources rs=new Resources(new Sigar());
        addMachineStat(ip,computerTitle,Double.toString(rs.getAllCpus()),Double.toString(rs.getMemory()),rs.getNetwork(),Double.toString(rs.getFreeHddPerc()));
    }

问题似乎是从第二行(addMachineStat(....))抛出的SigarException。由于某种原因,SigarException类(import org.hyperic.sigar.SigarException;)不会从jar文件传递到新项目。我是否还必须在其他项目中导入它?没有办法从jar中获取它而不需要用户导入它吗?

有趣的是,如果我在第二个项目上使用Maven(我的库项目首先使用Maven),它似乎工作正常。

1 个答案:

答案 0 :(得分:0)

是的,您必须导入您使用的代码和库依赖的所有jar,除非您使用maven或gradle等构建工具。
Maven具有Transitive Dependencies功能,可以完成所有工作

  

传递依赖是Maven 2.0中的一项新功能。这使您可以避免需要发现和指定您自己的依赖项所需的库,并自动包含它们。

     

通过从指定的远程存储库读取依赖项的项目文件,可以简化此功能。通常,这些项目的所有依赖项都在项目中使用,项目从其父项或其依赖项继承的任何依赖项都是如此,等等

这就是为什么它工作正常。

所以你有几种选择(按降序排列):

  1. 继续使用maven或其他构建工具。所有流行的IDE都与构建工具集成(例如M2Eclipse插件)
  2. 按照Including dependencies in a jar with Maven
  3. 中的说明将包含所有依赖项的库组装到一个jar中
  4. 手动管理依赖关系