Android 的 Java 是阉割版的?何解呢

208 天前
 nnegier
this.httpServer = HttpServer.create(new InetSocketAddress(host, port), 0);
import com.sun.net.httpserver.HttpServer;

这种写在 IDEA 里面正常用的代码,在 Android Studio 提示没有,那 Android 的 JDK 铁定是阉割版的了,这种应该怎么办呢?

4379 次点击
所在节点    Java
28 条回复
neoblackcap
208 天前
Android 的运行时不是 Java SE ,自然就没法用那些库。所以 Android 也没有宣称自己的运行时跟 Java 有什么关系(甲骨文版权官司警告)。
Android 就连字节码跟 JVM 的都不是一个东西。
w950888
207 天前
是的,java SDK 里很多 api Android 端都用不了,比如图片,图形和 GUI 相关的
lisongeee
207 天前
《拒绝了我们的连接请求》

android 需要网络权限才能用,你确定声明了网络权限吗?还有你的监听地址是 0.0.0.0 吗
spritecn
207 天前
javaer,我正常都用 aws 的 jdk,偶尔也会有些 sun 的包没有,比如 base64,这不是很正常
murmurkerman
207 天前
很简单加几个 jar 就好了 https://github.com/piyush01123/Android-Server
我记得 netty 是可以跑在安卓上的,调整下 minSdk 到支持 nio 的版本好像是 24 。
ktor 也可以跑 server 。
jetty 应该也可以。
murmurkerman
207 天前
遇到问题搜下 GitHub😶‍🌫️
sir283
207 天前
我都是用 socket 手搓 http server ,安卓的 Java 给我的感觉就是 jdk1.5 ,不能完全套用 Java1.8 那些特性,特别是要兼容旧版本安卓的时候。

这是我手搓的 http server 功能源码,你直接复制就能用了。
https://github.com/MrsEWE44/easyManager/blob/master/app/src/main/java/com/easymanager/activitys/FileSharedLayoutActivity.java
nnegier
206 天前
@lisongeee #23 这个是基础,网络权限肯定是加了的,而且我还自行写了一个 socket 来测试过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1110230

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX