首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 無法使用 java.awt.Polygon:平台不支援 AWT 套件的解決方案

     編輯:程式設計綜合問答

錯誤原因

Android 執行環境**不包含**標準 Java SE 的 java.awt 套件(僅保留極少數字體相關類別)。專案加入 JDK 函式庫也無法在裝置上執行,會拋出 NoClassDefFoundError。

替代方案

1. 使用 Android 原生幾何類別

  • android.graphics.Path:繪製多邊形、曲線,支援 addPolygon、lineTo 等。
  • android.graphics.Region:區域運算(交集、聯集、差集)。
  • android.graphics.RectF / Rect:矩形碰撞檢測。

2. 自行實作多邊形邏輯

// 點是否在多邊形內(射線法)
public boolean contains(PointF[] polygon, PointF p) {
    boolean inside = false;
    for (int i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
        PointF pi = polygon[i], pj = polygon[j];
        if (((pi.y > p.y) != (pj.y > p.y)) &&
            (p.x < (pj.x - pi.x) * (p.y - pi.y) / (pj.y - pi.y) + pi.x)) {
            inside = !inside;
        }
    }
    return inside;
}

3. 第三方庫

  • JTS Topology Suite (JTS):完整幾何運算,需移植去除 AWT 依賴(有 Android 移植版)。
  • LibGDX:Polygon、Intersector 等遊戲數學工具。

建議

  1. 優先使用 android.graphics.Path + Region 滿足大多數 2D 幾何需求。
  2. 若需複雜 GIS 操作,評估 JTS Android 移植版或改用原生 C++ (JNI) 呼叫 GEOS。
  3. 切勿嘗試將 JDK rt.jar 打包進 APK,會導致體積暴增且類別衝突。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved