Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据JAX-RS中的规范使用带有@PathParam的PathSegment?_Java_Eclipse_Jakarta Ee_Jax Rs - Fatal编程技术网

Java 根据JAX-RS中的规范使用带有@PathParam的PathSegment?

Java 根据JAX-RS中的规范使用带有@PathParam的PathSegment?,java,eclipse,jakarta-ee,jax-rs,Java,Eclipse,Jakarta Ee,Jax Rs,我正在学习JAX-RS。在阅读JAX-RS和相关书籍的同时,我多次阅读以下示例: import javax.ejb.Stateless; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.PathSegment; @Path("/read") @Stateless @Produces

我正在学习JAX-RS。在阅读JAX-RS和相关书籍的同时,我多次阅读以下示例:

import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.PathSegment;

@Path("/read")
@Stateless
@Produces("text/plain")
public class MinimalExample
{
  @GET
  @Path("/b/{file}")
  public String readFile2(@PathParam("file") List<PathSegment> fileParam)
  {
    return fileParam.toString();
  }
}
import javax.ejb.Stateless;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.products;
导入javax.ws.rs.core.PathSegment;
@路径(“/read”)
@无国籍
@生成(“文本/纯文本”)
公共类示例
{
@得到
@路径(“/b/{file}”)
公共字符串readFile2(@PathParam(“文件”)列表fileParam)
{
返回fileParam.toString();
}
}
(有时
路径段
是一个
列表
,但现在不相关。) 复制示例时,Eclipse抛出一个错误,告诉我:

类型“javax.ws.rs.core.PathSegment”对此参数无效。有关更多信息,请参阅JAX-RS 2.0规范(第3.2节)

我查阅了有问题的规范,事实上,它证实了这一点
PathSegment
是一个既没有
valueOf
也没有
fromString
的接口。所有示例均未提供
ParamConverterProvider

对应的Javadoc中列出了上述每个注释的有效参数类型,但是 常规(不包括@Context)支持以下类型:
1.可通过注册的
ParamConverterProvider
获得
ParamConverter
的类型。看见 有关更多信息,请参阅这些类的Javadoc。 2.基本类型。
3.具有接受单个
字符串
参数的构造函数的类型。
4.具有名为
valueOf
fromString
的静态方法并带有单个
String
参数的类型 返回该类型的实例。如果两种方法都存在,则必须使用
valueOf
,除非 类型是枚举,在这种情况下必须使用
fromString

5. <代码>列表
集合
,或
分类数据集
,其中
T
满足上述1、3或4

这与JavaEE规范不同,JavaEE规范也允许PathSegment作为有效类型。
有人能向我解释一下,当PathSegment违反JAX-RS规范时,这些JAX-RS示例究竟是如何使用的吗?我不能想象这是一个简单的错误,因为它太普遍了,我还没有看到任何评论抱怨他们的例子不起作用


编辑:我已经确定一些更完整的示例实际上是在使用
mvn安装时生成的,而不是在使用Eclipse时生成的。这让我相信它可能需要更少地使用JAX-RS本身,而更多地使用我的一些Eclipse设置。然而,我很困惑到底应该在哪里查找,甚至更困惑-为什么这些示例在构建时不符合JAX-RS规范?

我应该更仔细地阅读我自己的引用(我的重点):

上述每种注释的有效参数类型都列在相应的Javadoc中,但是通常支持以下类型:

检查Javadoc后,我确认
@PathParam
确实允许将
路径段
作为一种类型。 错误本身似乎来自JBossEclipse插件的JAX RS验证程序。
插件的最新版本不会显示错误。

我应该更仔细地阅读我自己的引用(强调我的):

上述每种注释的有效参数类型都列在相应的Javadoc中,但是通常支持以下类型:

检查Javadoc后,我确认
@PathParam
确实允许将
路径段
作为一种类型。 错误本身似乎来自JBossEclipse插件的JAX RS验证程序。
插件的最新版本不会显示错误。

如果您在Eclipse中构建时出现此错误,那么只是您有一些Eclipse插件或附加检查误导了您。Java编译器不可能进行这样的检查。你是对的,这个错误不是构建停止,似乎是JBoss插件的JAX RS验证程序中的一个疏忽。如果你在Eclipse中构建时遇到这个错误,那么只是你有一些Eclipse插件或附加检查误导了你。Java编译器不可能进行这样的检查。您是对的,错误不是构建停止,而是JBoss插件的JAX RS验证程序中的一个疏忽。