日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

d+java.ext.dirs_Java-JDK9-Djava.ext.dirs is not supported

發布時間:2025/3/19 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 d+java.ext.dirs_Java-JDK9-Djava.ext.dirs is not supported 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.JDK9出現的問題

去年JDK9發布了, 最近我把JDK8更新為JDK9后, 當我使用 Android apksigner dx 命令工具出現如下問題

D:\Dev\AndroidSDK\build-tools\27.0.3>apksigner

-Djava.ext.dirs=D:\Dev\AndroidSDK\build-tools\27.0.3\lib is not supported. Use -classpath instead.

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

D:\Dev\AndroidSDK\build-tools\27.0.3>dx

-Djava.ext.dirs=D:\Dev\AndroidSDK\build-tools\27.0.3\lib is not supported. Use -classpath instead.

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

-Djava.ext.dirs 和 -classpath 都是指定需要加載的jar/class文件目錄路徑,

按錯誤提示猜測應該是JDK9不再支持-Djava.ext.dirs參數,之前的JDK8可以正常支持。

于是按錯誤提示嘗試把 -Djava.ext.dirs 替換為 -classpath

在 D:\Dev\AndroidSDK\build-tools\27.0.3\apksigner.bat 批處理文件中修改如下:

REM call "%java_exe%" %javaOpts% -Djava.ext.dirs="%frameworkdir%" -jar "%jarpath%" %params%

call "%java_exe%" %javaOpts% -classpath="%frameworkdir%" -jar "%jarpath%" %params%

結果我還是太天真了,JDK9花式給了一個同樣的錯誤

D:\Dev\AndroidSDK\build-tools\27.0.3>apksigner

Unrecognized option: -classpath=D:\Dev\AndroidSDK\build-tools\27.0.3\lib

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

2.解決方法

Unrecognized option: -classpath

既然JDK9裝做不認識-classpath, 那我只好嘗試看看java命令有什么新option

D:\>java

用法: java [options] [args...]

(執行類)

或 java [options] -jar [args...]

(執行 jar 文件)

或 java [options] -m [/] [args...]

java [options] --module [/] [args...]

(執行模塊中的主類)

其中, 選項包括:

-d32 已過時, 在以后的發行版中將被刪除

-d64 已過時, 在以后的發行版中將被刪除

-cp

-classpath

--class-path

使用 ; 分隔的, 用于搜索類文件的目錄, JAR 檔案

和 ZIP 檔案列表。

果然JDK9新增命令選項 --class-path, 也是用來指定class/jar文件目錄路徑

在 D:\Dev\AndroidSDK\build-tools\27.0.3\apksigner.bat 批處理文件中修改如下:

REM call "%java_exe%" %javaOpts% -Djava.ext.dirs="%frameworkdir%" -jar "%jarpath%" %params%

call "%java_exe%" %javaOpts% --class-path="%frameworkdir%" -jar "%jarpath%" %params%

終于成功了

D:\Dev\AndroidSDK\build-tools\27.0.3>apksigner

USAGE: apksigner [options]

apksigner --version

apksigner --help

EXAMPLE:

apksigner sign --ks release.jks app.apk

apksigner verify --verbose app.apk

apksigner is a tool for signing Android APK files and for checking whether

signatures of APK files will verify on Android devices.

剛開始出現問題時,因為畏懼這種系統問題而粗暴滾回JDK8,還好后來強迫癥犯了,誤打誤撞終于找到原因…

“提出問題比解決問題更重要”,我對這句話越來越有感觸了…

出現了問題,應該感到慶幸而不是畏懼,因為這個新問題會帶來新知識,因畏懼而逃避的人將永遠無知!

總結

以上是生活随笔為你收集整理的d+java.ext.dirs_Java-JDK9-Djava.ext.dirs is not supported的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。