我最近阅读了关于 Pushing Pixels 的博客文章,其中描述了如何使用纯 Java 实现原生透明和半透明。所需的类驻留在 com.sun.awt 上,即 com.sun.awt.AWTUtilities。
我想知道如何将所需的类(不仅仅是这个)包含到我的发行版中,因为这些类仅在您安装了 jdk 并通过那里启动 jvm 时才可用。所以我的程序的用户将没有运行我的程序所需的类。
有任何想法吗?
我最近阅读了关于 Pushing Pixels 的博客文章,其中描述了如何使用纯 Java 实现原生透明和半透明。所需的类驻留在 com.sun.awt 上,即 com.sun.awt.AWTUtilities。
我想知道如何将所需的类(不仅仅是这个)包含到我的发行版中,因为这些类仅在您安装了 jdk 并通过那里启动 jvm 时才可用。所以我的程序的用户将没有运行我的程序所需的类。
有任何想法吗?
正如包所暗示的,AWTUtilities 是一个实现包,可能会发生变化。我认为从技术和法律角度分发课程并不是一个好主意。
从技术上讲,com.sun.awt.AWTUtlities 可能对其他类和内部实现细节有可能未知的依赖,特定于 Java 6 u10 及更高版本(它出现的版本)。这种未知的依赖角度必然会成立,因为绘画和图形也需要对一些本机实现进行更改。
其次,这在 Java 7 中必然会发生变化,因为 Sun 唯一没有发布支持透明性的 java.awt.AWTUtilities 的版本是因为它们不会对公共 API 进行更改,除非在主要版本中。
IANAL,但我认为在没有经过律师的情况下参与重新分发软件的行为是不明智的。此外,客户不喜欢在他们的系统中部署不受支持的任何软件的想法。
更新
从 6u10 开始,所有 Sun JRE(不仅仅是 JDK)都带有 com.sun.awt.AWTUtilities,所以最简单的做法是让您的用户在他们的系统上安装 Java 6u10 或更高版本,并让您的应用程序处理任何优雅地产生异常。