在 URI类中有个relative方法可以用来将uri相对化。今天开发时发现了问题,它返回的相对链接并不是我想象的那种结果——不具有正确的层次关系.
QUOTE:
relativize
public URI
relativize
(URI
uri)
根据此 URI 将给定 URI 相对化。
根据此 URI 将给定的 URI 相对化按以下方式计算:
-
如果此 URI 或给定 URI 是不透明的,或者如果两个 URI 的方案和授权组成部分不相同,或者如果此 URI 的路径不是给定 URI 的路径前缀,则返回给定的 URI。
-
否则,使用从给定 URI 获取的查询和片段组成部分,以及通过把此 URI 的路径从给定 URL 的路径开头处移除而得到的路径组成部分,构造新的相对分层 URL。
参数:
uri - 要根据此 URI 进行相对化的 URI
返回:
得到的 URI
抛出:
NullPointerException
- 如果 uri 为 null
在官网找到了这个buglist http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6226081
,症状在这个bug里描述得很清楚,我就不多说了.
我的测试用例如下:
QUOTE:
package cn.tohot.webdown;
import java.net.URI;
import junit.framework.TestCase;
public class LinkReplaceTest extends TestCase {
public void testLink() throws Exception {
URI i = new URI("http://localhost:8080/abc
");
URI i2 = new URI("http://localhost:8080/manager
");
assertEquals("manager", i.relativize(i2).toString());
i = new URI("/abc/");
i2 = new URI("/manager");
assertEquals("../manager", i.relativize(i2));
assertEquals(true, i.resolve(i.relativize(i2)).equals(i2));
}
}
2005年的bug,还没有解决掉,唉.!!!!!只好自己写一个了.
【2008-7】
分享到:
相关推荐
解决no such provider: BC 问题所需的JAR 在jdk中的jre\lib\security修改java.security文件, security.provider.6=com.sun.security.sasl.Provider 下面添加...bcprov-jdk16-143.jar提供加密,解密,生成密钥对等方法
JDK 1.8.0.221是Oracle公司发布的一个重要版本,它是Java 8系列的更新,主要提供了性能优化、安全性增强以及bug修复。 在Java 8中,引入了许多重要的新特性,这些特性极大地提升了开发效率和代码质量。其中最著名的...
《国密依赖包bcprov-jdk16-1.46.jar详解》 在Java开发中,加密技术是保障信息安全的重要手段。国密(国家商用密码算法)是中国自主研发的一系列密码算法,包括SM2、SM3和SM4等,它们在金融、政务等领域有着广泛的...
标题中的"bcprov-jdk16-146.jar"和"bcprov-jdk15-146.jar"是两个版本的Bouncy Castle提供者的Java档案(JAR)文件,用于加密和数字签名功能。Bouncy Castle是一个开源的Java加密库,它扩展了Java Cryptography ...
标题中的"bcprov-jdk16-1.46.jar"是一个Java的库文件,它属于Bouncy Castle项目,提供了一套广泛使用的加密算法和安全服务。Bouncy Castle是Java平台上的一个开源加密库,提供了对多种加密标准的支持,如RSA、AES、...
bcprov-jdk16-143.jar提供加密,解密,生成密钥对等方法
解压后使用方法:(不执行下面两步,运行java -version会报下面的错误,解压命令:tar xvzf jdk1.6.0_191.linux.x64.tar.gz) # Error occurred during initialization of VM # java/lang/NoClassDefFoundError: java...
解决no such provider: BC 问题所需的JAR 在jdk中的jre\lib\security修改java.security文件, security.provider.6=com.sun.security.sasl.Provider 下面添加 security.provider.7=org.bouncy...jdk15-135.jar的jar
这里的"1.8"表示主版本和次版本,代表Java 8,而"0_181"是该版本的更新次数,意味着这是对Java 8的第181次更新,通常包含性能优化、bug修复和新功能。 2. **JDK 1.8的重要性** Java 8是Java历史上的一个里程碑,...
解决no such provider: BC 问题所需的JAR 在jdk中的jre\lib\security修改java.security文件, security.provider.6=com.sun.security.sasl.Provider 下面添加 ...在\jre\lib\ext中添加bcprov-jdk15-135.jar的jar包
bcprov-jdk14-160.jar用于rsa非对称加密jar包,bcprov-jdk14-160.jar用于rsa非对称加密jar包,
JDK 1.8.0_162作为该版本的一个更新,可能包含了一些性能优化、安全修复和bug修复,确保了Java开发者能使用到稳定可靠的开发环境。 ### 安装与配置 在Linux系统中,解压"jdk1.8.0_162.tar.gz"后,通常会将其安装在...
java中对pdf文件操作,若要加密,需要这个包。 注意bcprov有许多版本,如bcprov-jdk16-145.jar, 请确认你的iText包的版本,本包适用于iText-2.0.1.jar版
logback-cfca-jdk1.6-3.1.0.0.jar
**Java JDK 1.8.0_331 安装与使用详解** Java Development Kit (JDK) 是Oracle公司发布的用于开发Java应用程序的工具集,它包含了Java编译器、Java运行时环境(JRE)、调试器以及其他必要的工具。在本篇中,我们将...
slf4j-jdk14-1.7.23.jar
JDK1.6_linux_免安装版,解压到相应的路径下,配置环境变量即可使用.用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。其中包括了Java编译器、JVM、大量的Java工具以及Java基础API里面是Java类库和...
java的jdk7/jdk8通用tools.jar,解决maven项目打包或者启动报错时缺少启动jar包的问题。
bcprov-jdk15-133.jar bcprov-jdk15-133.jar