Guava 21 InternetDomainName API 使用哪个版本的公共(public)后缀列表( https://publicsuffix.org/ )?
解析 keyupgrade.spaceforupdate.download
结果
scala> InternetDomainName.from("keyupgrade.spaceforupdate.download").topPrivateDomain
java.lang.IllegalStateException: Not under a public suffix: keyupgrade.spaceforupdate.download
at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
at com.google.common.net.InternetDomainName.topPrivateDomain(InternetDomainName.java:445)
... 50 elided
但根据 https://publicsuffix.org/list/public_suffix_list.dat,.download 是一个有效的公共(public)后缀. 我认为 Guava 21 使用的是旧版本的 publicsuffix 列表。有没有办法更新它?谢谢!
最佳答案
我很确定你有一个 Guava v14 jar在你的类路径上,可能是 in addition to你认为你正在使用的 v21 jar。它于 2013 年发布,在 .download
显然被添加为 TLD 之前。
查看堆栈跟踪,它表明异常是从 Preconditions.java
的第 176 行抛出的,但在 v21 中该行只是一个 */
。倒退直到v17行号有意义。
同样的问题与 InternetDomainName
- 比较 v21与 v14 (先决条件
也在 v14 中排列)。
所以仔细看看你的类路径,我认为这是你的问题。
编辑:确认这在 v21 中与 Scala 一起工作:
$ scala -cp guava-21.0.jar
Welcome to Scala 2.11.11 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.
scala> import com.google.common.net._
import com.google.common.net._
scala> InternetDomainName.from("keyupgrade.spaceforupdate.download").topPrivateDomain
res0: com.google.common.net.InternetDomainName = spaceforupdate.download
关于java - InternetDomainName 和 publicsuffix 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45046265/