浅析java.lang.IllegalArgumentException: URI is not absolute

82 篇文章 2 订阅
77 篇文章 3 订阅

 异常信息先贴上:

java.lang.IllegalArgumentException: URI is not absolute

问题其实很简单,也很直白。就是URI不是一个绝对的URI。

解决问题的思路也很简单,吧URI变成一个绝对的URI就可以了。

一般产生这样的问题主要是你的URI写错了。最主要的问题应该是漏掉了前面的协议部分(根据历史编码经验)。

感兴趣的可以看下什么是URI,不感兴趣的可以直接点赞跑路。


- - - - 我不是邪恶的分割线 - - - - -


 URI是什么?

URI的全称是Uniform Resource Identifier。中文翻译是统一资源标识符。最通常用在 URL 上来指定Web上资源文件的具体位置。它表示的是在web上可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。

直白讲,就是你的文件的路径全称。通过这个标识符,可以唯一识别到你这个资源用的。

URI的结构组成

URI通常由三部分组成:

  1. 资源的协议;
  2. 存放资源的主机名;
  3. 资源自身的名称。

(注意:这只是一般URI资源的命名方式,只要是可以唯一标识资源的都被称为URI,上面三条合在一起是URI的充分不必要条件)

例如:http://www.baidu.com/test/a.txt

协议:http

主机名:www.baidu.com

资源名称:/test/a.txt

好了,看到这里,基本上对URI 有了个基本的了解了。

至于URL,你可以理解为它是URI的一个子集就好了。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: java.lang.illegalargumentexception: uri is not absoluteJava中的一个异常,意思是URI不是绝对路径。 URI是Uniform Resource Identifier的缩写,用于标识互联网上的资源。URI可以是绝对路径或相对路径,绝对路径包含协议、主机名、端口号和路径等信息,而相对路径只包含路径信息。 当使用一个相对路径作为URI时,如果没有基础URI或者基础URI不是绝对路径,就会抛出java.lang.illegalargumentexception异常,提示URI不是绝对路径。解决方法是使用绝对路径或者提供正确的基础URI。 ### 回答2: java.lang.illegalargumentexception: uri is not absolute 这个错误信息通常在Java编程中遇到,指的是传递给一个URI(Uniform Resource Identifier,统一资源标识符)构造函数的值是相对路径而不是绝对路径。URI是一种用来指定唯一资源位置的字符串标识符,可以是文件、网址等。一个URI通常是由三个部分组成:协议、主机名和路径。 使用URI构造函数时,必须传递一个绝对路径,否则会出现 “uri is not absolute” 错误。如果不知道文件的绝对路径,可以使用相对路径或者File类来替代URI。 例如,以下代码会引发“uri is not absolute”错误: ```java URI uri = new URI("/myfile.txt"); ``` 而下面这个代码则是正确的,因为它使用的是绝对路径: ```java URI uri = new URI("file:///C:/myfile.txt"); ``` 另外,如果您使用的是相对路径,则需要使用到相对路径的基准URI来计算URI。示例如下: ```java URI baseURI = new URI("file://C:/Users/Documents/"); URI relativeURI = new URI("myfile.txt"); URI resolvedURI = baseURI.resolve(relativeURI); System.out.println(resolvedURI.toString()); ``` 在这个示例中,我们首先创建了一个基准URI,然后使用相对路径计算出一个新的URI,然后使用resolve()方法得到新的URI,并输出结果。 ### 回答3: java.lang.illegalargumentexception: uri is not absoluteJava中常见的一种错误,通常指的是传入的参数为相对路径,而方法需要的是绝对路径的情况。简单地说,就是URI(Uniform Resource Identifier,统一资源标识符)参数不是绝对路径。 URI是用来标识某种资源的字符串,通常包括协议、主机名(有时需要端口号)、路径、查询(可选)和片段(可选)等组成部分。而绝对路径是指从根目录开始,一直到指定文件或目录的完整路径。 一些方法要求传入的URI参数必须是绝对路径,如果传入的是相对路径,在执行时就会提示java.lang.illegalargumentexception: uri is not absolute 这个错误。这时我们需要修改相对路径为绝对路径,或者使用方法要求的类型传递参数。 解决这个错误的方法有多种,可以根据具体错误情况进行处理。下面是一些可能的方案: 1.将URI参数更改为绝对路径,可以使用File类的getAbsolutePath()方法,或者使用Paths.get()方法,以确保传递的是绝对路径。例如:String absolutePath = new File("relative/path/file.txt").getAbsolutePath() 2.使用方法要求的类型传递参数,例如使用URL类而不是URI类,或者使用File类而不是URI类。 3.检查代码中使用的URI是否正确,是否缺少某些部分,或者是否包含不合法的字符。 4.查看URI参数是否符合特定的格式要求,例如是否需要使用特定的协议前缀,或者是否需要特定的字符转义。 总之,在开发过程中,实现特定的URI要求是非常重要的。在传递URI参数时,我们要确认它们是绝对路径,完全符合要求。如果出现了java.lang.illegalargumentexception: uri is not absolute 这个错误,我们需要仔细检查传递的URI并解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值