如何在不同的Java项目中使用Java项目?

时间:2019-02-19 11:51:20

标签: java

我创建了Java项目1的类Hello.java

package com.test.java1;


@WebServlet("/hello")
public class Hello extends HttpServlet {



    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ....doLogic
    }


    }

pom.xml

<groupId>com.test</groupId>
<artifactId>java1</artifactId>
<version>0.0.1-SNAPSHOT</version>

我构建它并将war文件复制到我的java到lib文件夹中 现在我创建了java2,我想使用它

pom.xml

<dependency>
    <groupId>com.test</groupId>
    <artifactId>java1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <systemPath>${basedir}/lib/java1-0.0.1-SNAPSHOT.war</systemPath>
    <scope>system</scope>
</dependency>

并尝试从我的第二个Java调用它,我称编译错误

package com.test2.java2

import com.test.java1
public class Test {
    Hello hel - new Hell();
}

2 个答案:

答案 0 :(得分:1)

最好使用Maven on board机制。存储库管理器通常用于这种用例,但是您也可以在本地“模拟”它。

  1. 构建要重复使用的工件的项目mvn package
  2. 在本地mvn install
  3. 上安装该工件
  4. 以与在pom中声明外部依赖项相同的方式引用工件

在您的IDE中,您应该看到依赖关系得到了很好的解决

在更专业的情况下,尤其是如果涉及的开发人员超过一个,则应使用Nexus之类的存储库管理器。

答案 1 :(得分:1)

这可能只是复制和粘贴错误,但是当您尝试调用它时却错过了拼写为Hello的错误,请更改:     公开课测试{     你好,Hel-new Hell();} 到:

public class Test {
Hello hel - new Hello();}

还要使您的doGet方法受到保护,并可能从主方法调用它-您不能这样做,因为只能从同一包中调用受保护的方法,因此,如果将主类移至:

package com.test.java1

您将能够调用该方法。

您的Hello类也是一个webservlet吗?我不确定您可以通过定义接受HttpRequest和httpResponse的公共调用来使doGet受保护的方法保持原样。因此,将其更改为公开状态可能会解决其他问题-不确定为什么要使其受到保护。