Jar与项目本地文件的通信

时间:2019-01-11 21:20:56

标签: java spring-boot jar

所以我有一个Spring Boot项目,我正在其中尝试使用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) 

1 个答案:

答案 0 :(得分:0)

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

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

然后,一旦我们在依赖项之后创建了jar,就可以通过将其添加为依赖项来将其添加到TestProject中,然后它就不会抱怨该文件了。这将是周期性依赖关系,因此不鼓励使用。