如下图配置文件出现报红:
报错信息如下:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
中文意思就是统一资源标识符没有注册
解决方案1:
将这个标识符手动添加到IDEA中,首先复制报红色的那串代码(只要红色的部分),然后按照步骤添加就行。
file --> settings- -> languages & frameworks -->Schemas and DTDs 点击下方的 “+” 加号添加刚刚红色的url 即可。
步骤一:点击file --> settings
步骤二:点击languages & frameworks -->Schemas and DTDs
步骤三:点击下方的 “+” 加号添加报红的url,点击OK
步骤四:列表出现报红的URI即为添加成功,点击apply再点击Ok即可
返回配置文件,可以看到红色提示消失,控制台报错消失
是不是感觉很麻烦,其实还有实现方案1的另一种快捷方式,鼠标点击红色部分,然后IDEA出现小红灯,选择Ignore external resource即可解决 。(效果跟上面方案一的效果一样)
如图所示,可以看到已经成功添加
解决方案2:
鼠标点击红色部分,然后IDEA出现小红灯,选择Fetch external resource即可解决 。
第一次获取外部资源的时候会出现如下问题
直接点击try again,应该大部分人都能获取成功了,如下图所示标红部分消失(如果有小伙伴try again后还无法成功的欢迎在评论区和大家一起讨论一下,我暂时没有遇到该问题)
这时候可能有小伙伴疑惑了,为什么这样它标红就会消失了,idea究竟帮我们自动导入或配置了什么?很简单,像上面解决方案1一样,依次点击
file --> settings- -> languages & frameworks -->Schemas and DTDs
我们仔细观察可以发现idea在图中区域为我们添加注册了报红的URI
点击编辑进去查看详情
可以发现idea确实帮我们自动获取并注册了报红的URI,我们可以看到它具体位置
解决方案3:
Pom.xml添加依赖mybatis-generator-core.jar,运行maven导入,然后看一下报红是否消失,如果没有,close project ,在打开一下应该就可以了
<!-- mybatis-generator-core 反向生成java代码-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
或者不要上面依赖用build(tips:有的人用build的方式可能还是不行,尽量选择添加依赖,添加依赖后重新运行maven导入)
<build>
<plugins>
<!--mybatis generator插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
解决方案4:
先去这个http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd网址下载一个dtd
再复制到你想要放置目标文件夹里(比如D:\programming\dtd),这里我的路径就不改了,直接用它下载好的文件存放路径(D:\Download)
然后复制下面这个 再去IDEA Settings手动添加URI资源注册
http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd
像上面解决方案1一样,依次点击
file --> settings- -> languages & frameworks -->Schemas and DTDs
看到External schemas and DTDs后点击加号添加报红的URI以及对应的资源路径,示例图如下
添加完成后点击OK关闭编辑窗口,在点击apply,点击OK后即可,如图报红消失
温馨提示:
可能有小伙伴按照上面的解决方案来还是报红,这种情况有可能是IDEA的缓存导致的,可以先试试清除缓存重启一下。
以上就是这个问题的4种解决方案,那么这4种解决方案到底哪种更好呢?说实话,我也不太清楚,但我个人不建议选择第一种,至于实际情况看小伙伴的个人喜好了。如下图所示,我们可以发现他们第一、第二、第四种方案间的最大区别
第一种解决方案是在Ignore schemas and DTDs位置添加的,中文意思就是忽略架构和DTD,这个我也搞不太懂,反正感觉忽略掉一些警告性的操作都不太好
而第二种解决方案是在External schemas and DTDs位置添加的,中文意思就是外部架构和DTD,应该就是idea帮我们获取并导入了相应的资源,自动帮我们注册好了,个人比较推荐这种解决方案(第四种解决方案其实也是一样的效果,只不过需要自己下载资源文件并手动进行URI的添加注册)
文章彩蛋:
不知道有没有小伙伴发现,其实这个报红根本就不影响我们项目的运行,怎么样,是不是感觉非常神奇?难道改了这么久白改了?哈哈哈,其实还是非常有必要修改一下的,因为可能不知道什么时候我们的项目就会因为这个问题出现bug或者无法运行的情况。当然更大的效果就是让一些追求完美的小伙伴看着心里舒服。至于原因是为什么,个人觉得可能是idea版本或者什么其他问题导致它无法正确的识别报红的这个URI,有会的小伙伴可以在评论留言讨论哟,主要是我个人也想知道原因。哈哈哈,这篇文章到这里就结束了,欢迎我们下次再见。