Java 导入后引发错误的异常(sigar异常)引发

Java 导入后引发错误的异常(sigar异常)引发,java,eclipse,jar,Java,Eclipse,Jar,我创建了一个java应用程序,我想将其用作外部库。因此,我创建了一个jar文件,并将其导入到另一个项目中。 当我使用我的图书馆时,我会打电话给你 notif.addMachineStat(ip,"Harvester"); 被宣布为 public void addMachineStat(String ip,String computerTitle) throws InterruptedException, SigarException { Resources rs=new Res

我创建了一个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。由于某些原因,SIGAREException类(
import org.hyperic.sigar.SigarException;
)没有从jar文件携带到新项目中。我是否也需要在其他项目中导入它?难道没有一种方法可以从jar中获取它,而用户不必导入它吗


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

是的,除非使用Maven或gradle之类的构建工具,否则必须导入代码和库所依赖的所有JAR。
Maven具有可传递的依赖项特性,使所有功能都能正常工作

可传递依赖项是Maven 2.0中的一个新特性。这允许您避免发现和指定您自己的依赖项所需的库,并自动包含它们

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

这就是为什么它工作得很好。

因此,您有几个选项(按首选项降序排列):

  • 继续使用maven或其他构建工具。所有流行的IDE都与构建工具集成(例如M2Eclipse插件)
  • 将具有所有依赖项的库组装到一个jar中,如中所述
  • 手动管理依赖项