從現有的主題(What tomcat requires JDK or JRE?和Why does Tomcat require JDK installed?)中,我瞭解到Tomcat 5.5以後不需要安裝JDK來編譯jsp文件,因爲它使用了自己的捆綁Eclipse Java編譯器。但是,當tomcat運行java字節碼時,它確實需要JRE。但是在安裝Tomcat時,我們只需要指定JVM的位置。爲了編譯和運行Java代碼,我們只需要將JDK文件夾下的bin文件夾添加到路徑環境中即可。但是JDK 9不再包含JRE文件夾。相反,在JDK文件夾之外有一個獨立的JRE文件夾。運行已編譯的jsp代碼時,Tomcat仍然如何捕獲JRE? Tomcat中的哪個配置文件捕獲了這個?謝謝!哪個配置文件告訴Tomcat已安裝的JRE的位置?
1
A
回答
1
但安裝Tomcat的過程中,我們只需要指定JVM的位置
指定JVM的位置隱含指定JRE的位置,因爲JVM是JRE目錄中找到結構體。
要編譯並運行Java代碼,我們只需要將JDK文件夾下的bin文件夾添加到路徑環境中即可。
添加JDK bin
文件夾的路徑,意味着你可以運行java
和javac
命令。命令文件的位置隱式指定了要使用的JDK的位置,因此也指定了JVM。沒有配置文件。
在Windows 64位Java 5到Java 8中,JVM位於%JAVA_HOME%\jre\bin\server\jvm.dll
。
在Windows 64位Java 9中,JVM位於%JAVA_HOME%\bin\server\jvm.dll
中。
但是JDK 9不再包含JRE文件夾。相反,在JDK文件夾之外有一個獨立的JRE文件夾。
除非您告訴它不要創建單獨的JRE文件夾,否則所有Java版本的JDK安裝程序都將創建一個JDK文件夾和一個JRE文件夾。在這方面,Java 9與舊版Java版本沒有區別。
當運行編譯後的jsp代碼時,Tomcat仍然如何捕獲JRE?
Tomcat本身是用Java編寫的,所以Tomcat沒有找到Java。運行Tomcat的是Java。
相關問題
- 1. 如何獲取當前選擇的已安裝JRE的位置?
- 2. iOS獲取已安裝的配置配置文件
- 3. Tomcat屬性配置文件位置
- 4. 如何告訴Phing PHPUnit的安裝位置?
- 5. 已安裝軟件包的配置信息在哪裏?
- 6. liberty配置文件的默認安裝位置
- 7. CMake安裝:安裝配置文件
- 8. Slicehost安裝配置文件
- 9. Drupal安裝配置文件
- 10. 安裝配置文件
- 11. Xamarin沒有安裝配置文件匹配已安裝的iOS簽名身份
- 12. 如何從iOS7上的iPhone上刪除已安裝的配置配置文件
- 13. 配置文件的PhpMyAdmin安全警告
- 14. 獲取已安裝的配置文件的列表
- 15. 告訴Tomcat要使用哪個log4j.xml
- 16. Angular-cli的安裝位置在哪裏?
- 17. 定義安裝文件的位置
- 18. 配置文件的位置
- 19. 請告訴我配置時
- 20. 無法在iPad上安裝配置文件 - 「配置文件...無法安裝」
- 21. XCode 3.2.3不會顯示已安裝的配置文件
- 22. 如何將我的捆綁JRE安裝在$ {installer:sys.installationDir}/jre以外的其他位置?
- 23. Gem文件中的Gem安裝配置
- 24. PHP安裝中的配置文件
- 25. 配置文件的自動安裝
- 26. npm v4模塊安裝位置/配置
- 27. 是否可以告訴NSIS設置配置文件中列出的文件?
- 28. 基於Tomcat配置的Worklight WAS Liberty配置文件配置
- 29. Ubuntu中的apache Tomcat安裝目錄/在eclipse + ubuntu中配置Tomcat
- 30. 以編程方式配置Eclipse安裝的JRE
我在問Tomcat如何知道JRE所在的位置,以便運行.class文件從.jsp編譯。我不是問Java如何運行.class(我知道javac和java參與Java的情況)。我們只告訴Tomcat JVM所在的位置,即%JAVA_HOME%\ bin \ server \ jvm.dll。但在Java 9中,JRE不在JDK文件夾內(即在%JAVA_HOME%之外)。另請注意,對於JDK 9,JDK文件夾不包含JRE文件夾。例如,C:\ Program Files \ Java \ jdk-9.0.1和C:\ Program Files \ Java \ jre-9.0.1,前者不包括後者。 – Peng
你讀過我的答案了嗎? JVM和所有Java Runtime Library都是Java 9 JDK的一部分。當然,它們不在「JRE」子文件夾中,但JRE中的所有內容都位於JDK中。 ---但是,對於你的第一點,請再次閱讀答案的最後部分:Tomcat沒有找到Java。 ** Tomcat由Java **運行,並且Java已經知道它本身在哪裏。Tomcat的Java代碼只是使用反射調用JSP編譯的Java類。 Tomcat不需要找到Java來做到這一點,因爲** Java已經在運行它**。 – Andreas
對不起,我一開始並沒有完全理解你的解釋。我試圖更好地理解它。所以這個過程是這樣的:1).jsp被轉換成.java,2).java被編譯爲.class,兩個步驟都在Tomcat中,3).class由JVM運行,這超出了Tomcat ,但完全用Java完成。你是這個意思嗎?謝謝。 – Peng