有沒有辦法找出用於構建.jar文件的JDK版本?Java - 哪個版本也是一個.jar文件?
回答
這是不可能的,因爲你甚至不需要JDK來構建一個JAR文件 - 它只是一個帶有類和一個清單文件的ZIP文件。
你可以找到什麼版本的the class file format被使用。主版本號映射到majorJDK版本:
J2SE 6.0 = 50 (0x32 hex)
J2SE 5.0 = 49 (0x31 hex)
JDK 1.4 = 48 (0x30 hex)
JDK 1.3 = 47 (0x2F hex)
JDK 1.2 = 46 (0x2E hex)
JDK 1.1 = 45 (0x2D hex)
但是,Java編譯器必須使用以前的版本,這是經常用來實現向下兼容的類文件格式的選項。但是,如果您發現類文件版本號爲50,那麼您知道這些類絕對不是用Java 5或更早版本的JDK編譯的。
大多數罐子都是使用與jdk一起提供的「jar」工具構建的。
在SUN的JDK中,提供的「jar」工具將在嵌入的META-INF/MANIFEST.MF文件中添加一個「Created-By」行。
該行將指定創建的JAR的JDK版本(在我的情況「創建-者:1.6.0_17(Sun微系統公司)」)
其他Java廠商往往會做同樣的。
Ant jar任務在內部使用jar工具嗎?因爲我認爲更多的JAR文件是用Ant構建的,而不是通過命令行工具。 – 2010-12-14 15:54:50
在Jars MANIFEST.MF中可能有一個Build-Jdk屬性,它應該是您要查找的內容。
我只打了幾個類文件,而Build-Jdk根本就不在MANIFEST.MF文件中。 – 2010-12-14 15:47:31
嗯,你可能是對的。我正在用Created-By:Apache Maven看一個jar。然而,文檔似乎同意你的看法。 – Jim 2010-12-14 15:50:37
您可以提取jar文件的類文件,並使用下面的命令:
javap -verbose SomeClass | grep major
應該給你的類文件的版本號。
- 1. Java NIO(java.nio。*) - 哪個版本?
- 2. 所有Java版本的Jar文件?
- 3. VSTS for .dbproj文件的哪個版本?
- 4. 一個jar文件
- 5. Java - 從jar文件創建一個類
- 6. 我們如何才能將jar文件從一個版本更改爲另一個版本?硒
- 7. 如何在一個版本中確定文件的文本塊來自以前版本中的哪個文件?
- 8. 哪個.jar文件具有javax.xml.stream。*?
- 9. 確定使用哪個.jar文件
- 10. 構建一個jar文件
- 11. 創建一個.jar文件
- 12. 如何檢查哪個JRuby版本與哪個Java版本兼容?
- 13. Java Jar將幾個jar組合成一個可執行文件Jar
- 14. Struts 1.3.10需要哪個版本的java
- 15. 哪個tomcat版本適合java 8
- 16. 哪個版本的tomcat兼容Java 1.6
- 17. 哪個版本的Java 1.6最穩定?
- 18. Classloader問題 - 如何確定加載哪個庫版本(jar文件)
- 19. 在一個jar文件中編譯時在cmd中運行一個jar文件
- 20. 從.jar文件啓動一個文本文件(文件路徑?)
- 21. 是一個類似於.Net程序集的Java JAR文件嗎?
- 22. 錯誤:log4j的-API-2.9.0.jar是一個多版本的jar文件,但--multi釋放選項未設置
- 23. Egit的哪個Eclipse版本?
- 24. Java:分離JAR版本
- 25. 哪個Safari版本對應哪個WebKit版本?
- 26. 哪個版本與哪個版本兼容? Spring和JSTL
- 27. 哪個Anaconda版本對應哪個Mac版本?
- 28. 製作一個jar文件
- 29. 從JAR文件中找出Solace版本
- 30. 如何分析在Java程序中使用哪個jar文件?
雖然你說的所有內容都是正確的,但它確實告訴你什麼是編譯器編譯你的類,而不是用什麼jar工具來編譯你的類。大多數時候人們會認爲它們來自同一個工具包。 – 2011-01-12 19:42:42
答案http://stackoverflow.com/a/3313839/2776843好得多。檢查一下。 – shamanSK 2016-11-03 08:50:23