正如@user353852中提到的,您当前的依赖项仅包含 Java EE 6 API,不包含任何方法主体。因此,您无法针对它运行代码。要在容器外运行代码,您需要获得一个“具体”依赖项(来自 GlassFish 存储库):
<repositories>
<repository>
<id>glassfish-repository</id>
<url>http://download.java.net/maven/glassfish</url>
</repository>
...
</repositories>
<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
...
</dependencies>
请注意,此类依赖项不应使用作用域进行声明,您不希望将其捆绑在一起(它应该是 或 可能是 ,但不是 或 )。compile
provided
test
compile
runtime
我想知道javaee实现的提供者重要吗?通常我使用Apache服务器,因此拥有与服务器上相同的javaee实现会很棒。
理论上不可以。但在实践中,我建议使用来自您将要使用的服务器(或来自 Java EE 参考实现)的实现 JAR。由于您使用的是Java EE 6,因此这实际上意味着在这两种情况下都来自GlassFish v3的JARS。
第二个问题更为重要。javax.servlet 只是 javaee-api 实现的一部分,在哪里可以找到其他的。现在我需要“javax/validation/Validation”。
对于 Bean 验证 API,您需要具备以下条件(休眠验证器是 RI):
<repositories>
<!-- For Hibernate Validator -->
<repository>
<id>jboss</id>
<name>JBoss repository</name>
<url>http://repository.jboss.org/maven2</url>
</repository>
...
</repositories>
<dependencies>
<!-- Bean Validation API and RI -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.2.GA</version>
<scope>runtime</scope>
</dependency>
...
</dependencies>
我如何确定哪个工件实现了javaee的每个方面。也许在某个地方有某种“地图”?
没有什么官方的,但BalusC的这个很好的答案会有所帮助。