与项目本地文件进行Jar通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与项目本地文件进行Jar通信相关的知识,希望对你有一定的参考价值。

所以我有Spring启动项目,我试图使用Velocity模板。与Velocity模板相关的东西被添加为jar。

这是我的项目结构:

 java-> esub -> db -> persistence-> Group.java
              -> domain -> (many domain files)
     -> org.iowa.rec -> many packages

所以我从jar调用我的代码是这样的:

     RecordedMessage message = new RecordedMessage (PropertyLoader.getInstance());
    message.sendMessage(userProfileDO, group);

我通过的“小组”是我的项目的本地。当我尝试运行我的应用程序时,它抱怨:

    java.lang.LinkageError: loader constraint violation: loader (instance of sun/misc/Launcher$AppClassLoader) previously initiated loading for a different type with name "esub/db/persistence/Group"

我在编译时没有错误,但只能在运行时获得。所以我猜它无法联系到那个特定的文件夹。

我试过提供jar的范围但是它导致我抱怨更多的文件。

罐子结构:

  sub -> *.vm(all vm files)
      -> esub -> mail -> (some java files) 
答案

在进一步的研究中,我发现这是一个循环依赖的情况。在创建jar之前,我们需要将下面的类作为依赖项:

  java-> esub -> db -> persistence-> Group.java
          -> domain -> (many domain files)

然后,一旦我们在依赖项之后创建的jar,我们可以通过将它作为依赖项添加到TestProject中,然后它就不会抱怨该文件。这将是循环依赖,非常气馁。

以上是关于与项目本地文件进行Jar通信的主要内容,如果未能解决你的问题,请参考以下文章

maven添加本地jar到本地仓库

[Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法

在tablayout片段之间进行通信[重复]

maven项目导入本地jar包

IDEA导入项目jar包=来自本地仓库-一直报红线的解决办法

将本地项目文件托管到github的方法-Windows10