动态修改hosts"/>
动态修改hosts
前言
因工作需要频繁变更hosts, 故须自己实现一个动态管理器, 市面上其实已经有了类似的软件,比如switchhosts!
但因为不好集成其他功能(如远程连接KVM),所以还是决定自己开发一套。
原理
使用之前强烈建议先阅读本文了解原理:
Java实现实时生效hosts文件修改
准备
使用java
实现的话, alibaba
实际上已经开源了一个叫java-dns-cache-manipulator的项目, 使用起来非常简单, 但是未使用java17
进行测试过。
由于与网络相关, 我们同时引入okhttp
和java-dns-cache-manipulator
的最新版本:
<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>RELEASE</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>dns-cache-manipulator</artifactId><version>RELEASE</version>
</dependency>
需求
我有一个NAS
,可以通过http://192.168.31.6:5000
进行访问, 我希望动态修改域名nas.y4d
映射到192.168.31.6
。
使用
dns-cache.properties
nas.y4d=192.168.31.66
DnsCache.kt
fun main() {DnsCacheManipulator.loadDnsCacheConfig()val okHttpClient = OkHttpClient()val request =Request.Builder().get().header("Accept-Language", "zh-CN,zh;q=0.9").url(":5000").build()val response = okHttpClient.newCall(request).execute()println(response.body.string())
}
此时如果直接使用java17
运行会报错:
VM options
--add-opens java.base/java=ALL-UNNAMED
--add-opens
可以添加多个, 都是一对一, 比如--add-opens java.base/java.lang=ALL-UNNAMED java.base/java=ALL-UNNAMED
参考
- 解决JDK9以上的非法反射访问警告
更多推荐
动态修改hosts
发布评论