我最近阅读了关于 Pushing Pixels 的博客文章,这些文章描述了如何使用纯 Java 实现 native 透明和半透明。所需的类驻留在 com.sun.awt 上,即 com.sun.awt.AWTUtilities。

我想知道如何将所需的类(不仅仅是这个)包含到我的发行版中,因为只有当您安装了 jdk 并通过那里启动 jvm 时,这些类才可用。所以我的程序的用户将没有运行我的程序所需的类。

有任何想法吗?

最佳答案

正如包所暗示的那样,AWTUtilities 是一个实现包,可能会发生变化。我不认为从技术和法律的角度分发类(class)是一个好主意。

从技术上讲, com.sun.awt.AWTUtlities 必然对其他类和内部实现细节有可能未知的依赖,特定于 Java 6 u10 及更高版本 ( the release in which it appeared )。这个未知的依赖角度必然会成立,因为绘画和图形也需要在一些 native 实现中进行更改。

其次,这肯定会在 Java 7 中发生变化,因为 Sun 唯一没有发布支持透明度的 java.awt.AWTUtilities 的版本是因为除了主要版本之外,它们不会对公共(public) API 进行更改。

IANAL,但我认为在没有经过律师的情况下从事重新分发软件的行为是不明智的。此外,客户不喜欢在他们的系统中部署不受支持的任何软件的想法。

更新

从 6u10 开始的所有 Sun JRE(不仅仅是 JDK)都带有 com.sun.awt.AWTUtilities,因此最简单的操作方法是让您的用户在他们的系统上安装 Java 6u10 或更高版本,并让您的应用程序处理任何优雅地产生异常。

10-06 14:11
查看更多