![](/img/trans.png)
[英]How to reload java classes in intellij idea for maven web app
[英]Java - IntelliJ Community Maven Web App
我正在嘗試從.NET過來的Java,並希望制作一個簡單的頁面來執行以下操作:
我試用了Eclipse,但沒有取得太大的成功,而且與VS2017相比,代碼完成速度非常慢。 所以我正在嘗試IntelliJ社區。 我已經建立了一個Maven項目,但是我的URL沒有運行,而且看起來我的.java文件中沒有任何代碼完成。 它沒有自動構建應用程序目錄。
我的POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.johnnytest.webapp</groupId>
<artifactId>jerseyexample</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>jerseyexample Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>snapshot-repository.java.net</id>
<name>Java.net Snapshot Repository for Maven</name>
<url>https://maven.java.net/content/repositories/snapshots/</url>
<layout>default</layout>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.26</version>
</dependency>
</dependencies>
<build>
<finalName>jerseyexample</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/</url>
<!--<username>joe</username>-->
<!--<password>joe</password>-->
</configuration>
</plugin>
</plugins>
</build>
</project>
我的web.xml:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.johnnytest.app</param-value>
<load-on-startup>1</load-on-startup>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
我的Java文件:
package com.johnnytest.app;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/test")
public class MainApp {
@GET
@Path("/{param}")
public Response getMessage(@PathParam("param") String message) {
String output = "Jersey says " + message;
return Response.status(200).entity(output).build();
}
}
而且它正在運行Tomcat 7,並且我已經在系統上安裝了9。 有什么方法可以使其在我現有的Tomcat安裝上運行? 當我訪問localhost:8080上的任何URL時,我在Safari中僅得到一個空白頁。 在OSX Sierra上運行。
如果尚未執行此操作,請下載Apache Maven 3.5.0並將/bin
目錄添加到系統PATH
變量中。
輸入pom.xml
文件所在的目錄,然后運行以下命令:
mvn clean package mvn tomcat7:deploy mvn tomcat7:start
第一個命令將構建代碼並在子目錄target/
生成Java WAR存檔。
第二條命令會將WAR歸檔文件部署到Tomcat應用程序服務器。
第三個命令將啟動Tomcat並按照配置( localhost:8080
)公開服務器。
不必擔心tomcat7
命令,即使您使用的是Tomcat 9,也應該可以。
IntelliJ中的Maven管理並不是真正的最佳選擇,但是在右側應該會看到一個Maven項目窗格(如果沒有,請選擇“工具->查看工具按鈕”菜單)。 單擊並展開。
在Lifecycle
您將找到標准的Maven目標,因此雙擊clean
,然后package
將以與上一節中所述類似的方式生成WAR文件。
在“ Plugins
您將找到由Tomcat插件確定的Maven目標。 展開並雙擊tomcat7:deploy
和tomcat7:start
。
如果您來自.NET,只需將Tomcat視為VisualStudio附帶的IISExpress的Java版本。 它是一個應用程序服務器,您可以在其中部署應用程序代碼,並模擬用於開發的Web服務器服務。
有很多相似之處,也有很多差異。 通常,.NET中的應用程序生命周期包含得多,我認為除了VisualStudio和MSBuild外,您幾乎不需要其他任何東西。 在Java中,由於社區的存在,數十年來創建和發展了許多東西:我們擁有不同的構建系統(Maven,Ant,Gradle),最好的工具是命令行,並且有多種方法可以實現相同的目標。
例如,您將Jersey REST庫與下面的基礎應用程序服務器(Tomcat)一起使用,但也可以部署到NIO服務器(Grizzly)。 如果您使用像Spring這樣的擴展框架,通常甚至不用擔心這些事情,因為從一種方式切換到另一種方式只是在pom.xml中導入一個模塊,而不是另一種。
希望這對您有所幫助,並為您提供了一些指導。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.