Intellij Idea 社区版中的 Tomcat

Posted

技术标签:

【中文标题】Intellij Idea 社区版中的 Tomcat【英文标题】:Tomcat in Intellij Idea Community Edition 【发布时间】:2014-03-29 15:54:54 【问题描述】:

是否可以在 Intellij Idea Community Edition 中使用 Tomcat 服务器运行 Web 应用程序?

我试图找到有关它的一些信息,但没有取得任何成功。

【问题讨论】:

【参考方案1】:

在 IntelliJ IDEA Community Edition 中使用 Tomcat 9,无需安装任何插件

注意:确保设置了环境变量 JAVA_HOMECATALINA_HOME。如果最近重置了 JAVA_HOMECATALINA_HOME 的值,请重新启动 IntelliJ IDEA,然后再继续。

    首先在IntelliJ IDEA中打开项目,然后点击File>Settings...>Tools>External Tools,然后点击+按钮。 然后我们必须为 Tomcat 指定 Name,然后在 Program 中我们 必须指定 bin 文件夹中 catalina.bat 文件的路径 Tomcat 安装的文件夹,然后在 Arguments 中我们必须写 jpda run 然后点击 Ok 然后点击 Apply 。 之后我们可以通过点击Tools > External Tools > name_you_provided_for_tomcat 来运行Tomcat

然后我们必须将我们想要托管的应用程序的必要文件放在 Tomcatwebapps 文件夹中 Tomcat所在的文件夹中> 已安装。

【讨论】:

【参考方案2】:

我认为 maven 没有正确安装。检查 mvn --v

请检查环境变量中的 Maven 主路径 或者你在安装maven之前已经创建了这个项目

【讨论】:

【参考方案3】:

这个问题已经回答了,但是我在这里写的只是我的观察,以便社区中的其他人可以节省一些时间。 我尝试使用 Intellij 社区版中的嵌入式 tom-cat 运行 spring-mvc 项目。

我所做的第一次尝试是使用 Gradle tom-cat 插件,但是我遇到的问题是 tomcat 服务器只启动一次,然后从第二次启动构建抱怨说容器已经在运行。 网上有很多关于这个的开放线程,对于一些人来说它有效,对于大多数人来说(几乎 90% 的我打破了我的头的 web 线程,都面临着容器第二次无法启动的相同问题。分辨率不存在。

在浪费了很多时间之后,我最终决定切换到 maven tom-cat 插件,并使用 maven 进行与 gradle 和 VOILA 相同的 spring-mvc 设置!它在第一个短片中起作用。

长话短说,如果您在 intellij 社区版中设置 spring-mvc 项目,请考虑使用 maven tomcat 插件。

希望这有助于某人在各种网络论坛上进行数小时的探索。

【讨论】:

【参考方案4】:

找到这个好网站 https://stefancosma.xyz/2018/10/01/how-to-use-tomcat-intellij-idea-community/ 全部归功于作者

【讨论】:

【参考方案5】:

如果你使用 Gradle,你可以试试我的脚本:https://github.com/Adrninistrator/IDEA-IC-Tomcat。这个脚本将为 web 应用程序构建文件,创建一个 Tomcat 实例,启动 Tomcat 并加载 web 应用程序。

【讨论】:

您的脚本没有 README 文件。请更新您的脚本以帮助其他人开始使用它。 谢谢。我添加了一个 README.md 和一个输出英语的 runTomcat-en.gradle 脚本。【参考方案6】:
VM :-Djava.endorsed.dirs="C:/Program Files/Apache Software Foundation/Tomcat 8.0/common/endorsed" 
    -Dcatalina.base="C:/Program Files/Apache Software Foundation/Tomcat 8.0"  
    -Dcatalina.home="C:/Program Files/Apache Software Foundation/Tomcat 8.0" 
    -Djava.io.tmpdir="C:/Program Files/Apache Software Foundation/Tomcat 8.0/temp" 
    -Xmx1024M

【讨论】:

【参考方案7】:

Intellij 社区不提供 Java 应用服务器集成。你的选择是

    购买 Intellij 许可证, 切换到 Eclipse ;) 安装Smart Tomcat插件https://plugins.jetbrains.com/plugin/9492 安装IDEA Jetty Runner插件https://plugins.jetbrains.com/plugin/7505 从 Maven、Gradle 等运行应用程序服务器,如其他答案中所述。

我亲自安装了 Jetty Runner 插件(Jetty 对我来说很好,我不需要 Tomcat),我对这个解决方案很满意。不过,我不得不处理IntelliJ idea - Jetty, report an exception。

【讨论】:

Smart Tomcat 插件也很方便。 谢谢,Smart Tomcat 更适合多模块 maven 项目。 我尝试在 Intellij 中建立一个使用 Jetty Runner 的项目,但尚未成功,无论我尝试什么 url,我总是遇到 HTTP ERROR 404,我怀疑 Jetty Runner 插件是否正常工作。我还使用 Jetty Runner GitHub 页面的说明尝试了自述文件,但仍然没有运气。你有一个可以与我分享的正在运行的项目吗? SmartTomcat 不允许访问 tomcat 服务器,我们只能访问已部署的 war url。如果部署的实例需要与在同一个 tomcat 上运行的其他服务(其他战争的微服务 - diff 项目)进行通信,这是有问题的。最后,选项 2 对我有用。【参考方案8】:

我用的是林杰的answer。强烈推荐。

如果您以前从未使用过 Maven 并且不想深入了解它:请遵循 Jay Lin 的回答,但也要这样做:

    右键单击您的项目名称 -> 添加框架支持 -> Maven。

    然后从这里http://maven.apache.org/install.html安装maven。照它说的做,运行命令。

    然后从这里https://mvnrepository.com安装spring-boot。

    如果有任何错误消息,请按照错误消息进行操作 - 也许您需要安装一些其他东西(只需 google 一下,mvnrepository.com 就会出现)。安装使用这个命令:

    mvn install:install-file -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=path

path 替换为您下载jar 文件的位置,将版本、组和工件ID 替换为来自mvnrepository.com 的信息。

    我遇到的其他错误:

我必须在 src/main/java 中创建一个类(在 main 中使用简单的System.out.println 命令)并在pom.xml 中的<properties> 标记中添加<start-class>main.java.Hello</start-class>。顺便说一句,当您从我的回答中执行第一个操作时,pom.xml 应该会出现 - 将 Jay Lin 的代码复制粘贴到那里。

我遇到的另一个错误与JAVA_HOME 变量和版本有关。为什么它认为 jdk 是第 7 个版本,而我说它是第 8 个版本。所以我把<properties>中的java版本标签改成了<java.version>1.7</java.version>

现在它工作正常!祝大家好运。

【讨论】:

【参考方案9】:

是的,这是可能的,而且相当容易。

    在运行按钮附近,从下拉菜单中选择“编辑配置...” 在左侧,单击加号,然后单击 maven 并在右侧将其重命名为“Tomcat”。 对于命令行,输入“spring-boot:run” 在运行器选项卡下,对于“VM 选项”,输入“-XX:MaxPermSize=256m -Xms128m -Xmx512m -Djava.awt.headless=true" 注意:“使用项目设置”应取消勾选。 对于环境变量,输入“env=dev” 最后,点击确定。

当您准备好按运行时,如果您转到“localhost:8080/”,您将看到您的页面。

我的pom.xml文件和官方spring教程一样 Serving Web Content with Spring MVC

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-serving-web-content</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

【讨论】:

他要求运行 JavaEE 应用程序而不是 Spring Boot 应用程序。 虽然对于 Spring 启动应用程序来说就像一个魅力。使用这种方法无需安装任何 tomcat 插件。事实上,其他答案中提到的所有 tomcat 插件都不适用于我的 Spring Boot 应用程序。【参考方案10】:

Tomcat 还可以与 IntelliJ Idea - 带有 Tomcat Runner 插件的社区版集成。

详情如下: https://plugins.jetbrains.com/plugin/8266-tomcat-runner-plugin-for-intellij

【讨论】:

如何部署战争?【参考方案11】:

Tomcat (Headless) 可以与 IntelliJ Idea - 社区版集成。

分步说明如下:

    在 pom.xml 中添加tomcatX-maven-plugin

    <build>
        <plugins>
            <plugin>
                 <groupId>org.apache.tomcat.maven</groupId>
                 <artifactId>tomcat7-maven-plugin</artifactId>
                 <version>2.2</version>
                 <configuration>
                     <path>SampleProject</path>
                 </configuration>
            </plugin>
        </plugins>
    </build>
    

    添加新的运行配置如下:

    Run >> Edit Configurations >> + >> Maven
    
    Parameters tab ...
    Name :: Tomcat
    Working Directory :: Project Root Directory
    Command Line :: tomcat7:run
    
    Runner tab ...
    VM Options :: <user needed options>
    JRE :: <project needed>
    

    直接从 IntelliJ 运行 >> 运行/调试菜单以运行/调试模式调用 Tomcat

注意:虽然这被认为是使用 IntelliJ 的 Tomcat 集成功能 - 企业版功能的黑客行为,但我认为这是一种将 tomcat 集成到 IntelliJ Idea - 社区版的编程方式。

【讨论】:

【参考方案12】:

我正在使用 intellij CE 创建 WAR,并使用 tomcat 部署管理器在外部部署战争。这适用于测试应用程序,但我仍然找不到调试它的方法。

    打开 cmd 和当前目录到 tomcat/bin。 您可以使用批处理文件 start.bat 和 shutdown.bat 启动和停止服务器。 现在使用 intellij 中的 mvn 目标构建您的应用。 打开 localhost:8080/ **您的端口号可能不同。 使用此 tomcat 应用程序部署应用程序,如果遇到身份验证错误,则需要在 conf/tomcat-users.xml 下设置凭据。

【讨论】:

【参考方案13】:

你可以使用带有 gradle 的 tomcat 插件。欲了解更多信息,您here。

apply plugin: 'tomcat'

dependencies 
    classpath 'org.gradle.api.plugins:gradle-tomcat-plugin:1.2.4'


[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

[tomcatRun, tomcatRunWar, tomcatStop]*.stopPort = 8090
[tomcatRun, tomcatRunWar, tomcatStop]*.stopKey = 'stfu'
tomcatRunWar.contextPath = "/$rootProject.name"
tomcatRunWar.ajpPort = 8000

if (checkBeforeRun.toBoolean()) 
    tomcatRunWar  dependsOn += ['check'] 

【讨论】:

【参考方案14】:

使用 Maven,试试tomcat7-maven-plugin

  <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.tomcat.maven</groupId>
                  <artifactId>tomcat7-maven-plugin</artifactId>
                  <version>2.2</version>
                  <configuration>
                      <path>/</path>
                      <contextFile>src/main/webapp/WEB-INF/config/app-config.xml</contextFile>
                      <mode>context</mode>
                      <charset>UTF-8</charset>
                      <warDirectory>target/$project.artifactId-$project.version</warDirectory>
                  </configuration>
              </plugin>
          </plugins>
  </build>

使用tomcat7:run-war运行它

更多进球here

【讨论】:

我使用“tomcat:run-war -DskipTests”目标和localhost:8080/main地址行,其中main是我的artifactId。但不知道web.xml,它说:[警告]警告:选定的war文件包含将被忽略的WEB-INF/web.xml(war任务中缺少webxml属性,或者ignoreWebxml属性被指定为'真')。 我想知道为什么它只有在您删除覆盖 标签的 标签时才有效。【参考方案15】:

maven 插件和嵌入式 Tomcat 是可用的变通方法(我更喜欢第二个,因为您可以调试),但实际的 Web 服务器集成是仅在 intelij 付费版本中提供的功能。

【讨论】:

【参考方案16】:

对于 Intellij 14.0.0,应用程序服务器选项位于 查看 > 工具窗口 > 应用程序服务器(但如果启用,我的意思是如果您安装了任何插件)

【讨论】:

ce版可以安装哪些服务器插件? jetbrains.com/idea/help/… 我不认为在 CE 版本中启用了 appservers【参考方案17】:

如果你使用maven,你可以使用这个命令mvn tomcat:run,但是首先你在你的pom.xml中添加这个结构到build标签中,就像这样:

<build>
    <finalName>mvn-webapp-test</finalName>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>$maven.compiler.plugin.version</version>
              <configuration>
                  <source>1.6</source>
                  <target>1.6</target>
              </configuration>
          </plugin>
      </plugins>
  </build>

【讨论】:

IntelliJ IDEA 13.1 版本的文件->设置中没有看到“应用程序服务器”选项。如何启用它。 如果你不使用 Maven 怎么办? 这个配置是否也支持调试? @Bhavesh 你实现在 Intellij Idea 社区版中使用 tomchat 了吗? @Elaman Aitymbet 如果您使用的是 Java8,这可能是您需要的设置:maven.apache.org/plugins/maven-compiler-plugin/examples/…【参考方案18】:

是的,你可以使用 maven 插件,或者简单的 java 程序。不需要IDE插件。 参见例如来自https://devcenter.heroku.com/articles/create-a-java-web-application-using-embedded-tomcat的主类

【讨论】:

+ 非常有用的链接。

以上是关于Intellij Idea 社区版中的 Tomcat的主要内容,如果未能解决你的问题,请参考以下文章

Intellij IDEA 15中的持久性工具窗口在哪里?

社区版idea不能用javaee吗

无需付费,教你IDEA社区版中使用Tomcat

IntelliJ IDEA 旗舰版与社区版有啥不同

text IntelliJ IDEA社区版构建WAR

从 IntelliJ 社区版启动 Spring Boot 应用程序