我尝试使用答案here,以便在IntelliJ Idea Community Edition中从Oracle运行此示例。我已经创建了一个新项目,从示例中复制了源代码,并在Idea中启用了Maven支持。我可以制作并运行项目,但无法在浏览器中访问服务。雄猫一直在扔404。请注意,源代码和pom.xml文件未被修改。
pom.xml:
<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>com.example.employees</groupId>
<artifactId>employees-app</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>employees-app Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<tomcat.version>7.0.57</tomcat.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-juli</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<finalName>employees-app</finalName>
<resources>
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<inherited>true</inherited>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>employees-app-${project.version}</finalName>
<archive>
<manifest>
<mainClass>com.example.employees.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
使用Process Monitor,我已经能够确定Tomcat将网站的根目录(localhost:8080)与MyProject\target\classes相关联。如果我在那里放一个虚拟的txt文件,我可以通过浏览器访问它(例如,localhost:8080/test.txt)。
“classes”目录不为空。它包含两个子目录:
- com/example/employees/*.class -所有类文件
- META-INF/resources/Oracle example (http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/basic_app_embedded_tomcat/files/employees-app.zip)中的/main/src/webapp中的所有内容
我的直觉是输出的文件夹层次结构有问题。我不知道该用什么或怎么修。有什么想法吗?
1条答案
按热度按时间guicsvcw1#
我想通了。
正如链接的帖子所指出的,最好使用Heroku的启动器和pom.xml文件。
这个启动器函数通过以图解方式配置Tomcat在项目目录中运行来完成大部分工作。
我不知道如何设置路径到Tomcat的 conf 文件夹,但我能够克服这个感谢这个答案。在正常情况下,Tomcat负责设置初始上下文。因此,webapp的context.xml文件中的环境变量最终会出现在初始上下文中。幸运的是,可以通过自定义的InitialContextFactory复制这一点。