跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Java 怎么实现条件编译?
未分類
23 9 月 2020

Java 怎么实现条件编译?

Java 怎么实现条件编译?

資深大佬 : enenaaa 1

java 基础为零。
维护的代码里,有个类引用到了 sun.awt.X11 。
但是又想能跨平台编译,起码在 windows 和 linux 都能用。
怎么屏蔽平台差异呢?
难道只能运行时加载类库么。
大佬有話說 (16)

  • 資深大佬 : czzt1

    不需要处理的吧,直接可以跨平台的

  • 資深大佬 : wanglulei

    jvm 了解一下,java 如何实现跨平台?

  • 資深大佬 : wysnylc

    去了解下 JVM 跨平台

  • 主 資深大佬 : enenaaa

    @czzt1 oracle jdk1.8 的 linux 版本有 sun.awt.X11 包,windows 版本没有。
    我现在是想在 linux 用这个包, 在 windows 上用其他方式代替。
    在代码里怎么屏蔽差异?
    import 可以按条件区分平台么。

  • 資深大佬 : InkStone

    你可以在构建工具上下功夫。比如 gradle 就支持不同的 flavor 使用不同的源代码……

  • 資深大佬 : chendy

    不知道这个类是干啥的,但是明显 win 下是木有的,所以
    1. 换可以跨平台的实现方式
    2. 不同平台不同实现,运行时判断环境使用特定实现

  • 資深大佬 : DsuineGP

    把不同平台的依赖都打包进去,运行时再根据平台判断加载哪个库

  • 資深大佬 : palmers

    可以使用 SPI 来做 然后做一个具体平台的 provider 引入

  • 資深大佬 : limuyan44

    你要不试试 Class.forName(“sun.awt.X11”)

  • 資深大佬 : heian0224

    用注解处理器编译器处理

  • 資深大佬 : lewis89

    javassit 可以在运行时 修改代码 拼接代码

  • 主 資深大佬 : enenaaa

    @lewis89
    @heian0224
    @limuyan44
    @palmers
    @chendy
    @DsuineGP 决定用反射来解决了。

  • 資深大佬 : Kaiv2

    应该是动态类加载

  • 資深大佬 : Citrus

    为啥要反射???用的时候做个判断,找不到这个类不要报错直接跳过这段逻辑不就好了?

  • 資深大佬 : akiza

    @Citrus import 不可以判断这个存不存在吧

  • 資深大佬 : heian0224

    反射效率不高的。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具