Java Tomcat 9 jndi:协议错误异常:未知协议:jndi

Java Tomcat 9 jndi:协议错误异常:未知协议:jndi,java,url,jndi,tomcat9,Java,Url,Jndi,Tomcat9,所以我有一个库,它使用Apache Common VFS从WEB-INF目录加载资源。该资源必须与java.net.URL一起加载,因为VFS在下面使用的是java.net.URL。以下是网址: jndi:/localhost/WEB-INF/config/some.xml 这在Tomcat7中非常有效,但在文档中提到的Tomcat9中却不起作用。但是我找不到关于如何更改URL的任何细节,所以它又高兴了。除了EJB和DataSource之外,我找不到任何jdni:URL的示例 以下是基本的例外

所以我有一个库,它使用Apache Common VFS从WEB-INF目录加载资源。该资源必须与java.net.URL一起加载,因为VFS在下面使用的是java.net.URL。以下是网址:

jndi:/localhost/WEB-INF/config/some.xml
这在Tomcat7中非常有效,但在文档中提到的Tomcat9中却不起作用。但是我找不到关于如何更改URL的任何细节,所以它又高兴了。除了EJB和DataSource之外,我找不到任何jdni:URL的示例

以下是基本的例外情况:

MalformedURLException: unknown protocol: jndi
我甚至找不到提供jndi协议的类


有什么想法吗?

以防万一:Tomcat没有一个现成的工厂用于
java:comp/env/url
(与JDBC不同),因此您必须编写自己的url工厂。中的答案(和链接)显示了如何。(我不知道URL是否能提供对
WEB-INF
中文件的访问。)一些更为Tomcat特定的背景是.Hi@andrewjames,但Tomcat 7支持jdni:协议,它在Tomcat 8/9中停止工作。我在我的git repo中查了5年,我已经使用jndi URL超过5年了,因为我记不清为什么要使用它。现在我认为这是因为我需要通过URL引用WEB-INF中的内容,这是唯一的方法。那么什么改变了?对不起,我知道这是你问题的重点,但我不知道什么可能改变了。我看到的最接近的版本是8.0,但错误消息与您的不匹配(无论如何,它是在8.5中回滚的)。我的评论充其量是无关紧要的。是的,我浏览了部分代码,在代码库中找不到任何URL工厂。我确实找到了TomcatURLStreamHandlerFactory,它定义了一个war:URL,但所有示例都类似于war:file:/full/path/what/good/is/this。