javavm,javavm時windows出現錯誤

本文目錄一覽:

JAVA VM是什麼意思

java虛擬機,是java實現跨平台的工具。

java生成的class文件在虛擬機上執行,通過生成不同平台上的代碼,實現跨平台。而不用編成人員為了在不同的平台上運行,而寫不同的代碼。

JNIEnv和JavaVM的區別

Java和Android中JavaVM對象有區別

在java里,每一個process可以產生多個java vm對象,但是在android上,每一個process只有一個Dalvik虛擬機對象,也就是在android進程中是通過有且只有一個虛擬器對象來服務所有java和c/c++代碼。 Java 的dex位元組碼和c/c++的*.so同時運行Dalvik虛擬機之內,共同使用一個進程空間。之所以可以相互調用,也是因為有Dalvik虛擬機。當java 代碼需要c/c++代碼時,在Dalvik虛擬機載入進*.so庫時,會先調用JNI_Onload(),此時就會把JAVA VM對象的指針存儲於c層jni組件的全局環境中,在Java層調用C層的本地函數時,調用c本地函數的線程必然通過Dalvik虛擬機來調用c層的本地函數,此時,Dalvik虛擬機會為本地的C組件實例化一個JNIEnv指針,該指針指向Dalvik虛擬機的具體的函數列表,當JNI的c組件調用Java層的方法或者屬性時,需要通過JNIEnv指針來進行調用。 當本地c/c++想獲得當前線程所要使用的JNIEnv時,可以使用Dalvik虛擬機對象的JavaVM* jvm-GetEnv()返回當前線程所在的JNIEnv*。

如何得到JavaVM,JNIEnv介面

JavaVM介面

第一種方式,在載入動態鏈接庫的時候,JVM會調用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定義了該函數)。第一個參數會傳入JavaVM指針。

第二種方式,在native code中調用JNI_CreateJavaVM(jvm, (void**)env, vm_args)可以得到JavaVM指針。

兩種情況下,都可以用全局變數,比如JavaVM* g_jvm來保存獲得的指針以便在任意上下文中使用。

Android系統是利用第二種方式Invocation interface來創建JVM的。

JNIEnv介面

JNI開發最常見的錯誤就是濫用了JNIEnv介面。需要強調的是JNIEnv是跟線程相關的。

在native method中,JNIEnv作為第一個參數傳入。那麼在JNIEnv不作為參數傳入的時候,該如何獲得它?JNI提供了兩個函數:(*jvm)-AttachCurrentThread(jvm, (void**)env, NULL)和(*jvm)-GetEnv(jvm, (void**)env, JNI_VERSION_1_2)。兩個函數都利用JavaVM介面獲得JNIEnv介面,上面已經講到如何獲得JavaVM介面。

JNI規範也說明,可以將獲得JNIEnv封裝成一個函數。

1

2

3

4

5

6

JNIEnv* JNU_GetEnv()

{

JNIEnv* env;

(*g_jvm)-GetEnv(g_jvm, (void**)env, JNI_VERSION_1_2);

return env;

}

載入java vm時windows出現錯誤 2怎麼解決

解決方法:

UG NX11.0點擊「install liscense server」因為JAVA安裝出現問題:

載入 JAVA VM時WINDOWS 出現錯誤:2」

改變JAVA的配置方法:

1)不要使用JAVA安裝教程中的JAVA_HOME變數。

2)建立PATH和CLASSPATH時使用絕對路徑,不要使用%JAVA_HOME%。即將%JAVA_HOME%用C:\Program Files\Java\jdk1.8.0_144(jdk安裝路徑)手動替換。

然後,UG NX11.0就能繼續進行下去。

Java是一種可以撰寫跨平台應用程序的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、遊戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。

Java 不同於一般的編譯執行計算機語言和解釋執行計算機語言。它首先將源代碼編譯成二進位位元組碼(bytecode),然後依賴各種不同平台上的虛擬機來解釋執行位元組碼,從而實現了「一次編譯、到處執行」的跨平台特性。

不過,每次的編譯執行需要消耗一定的時間,這同時也在一定程度上降低了 Java 程序的運行效率。但在 J2SE 1.4.2 發布後,Java 的執行速度有了大幅提升。

與傳統程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術。全球數以萬計的 Java 開發公司被要求所設計的 Java 軟體必須相互兼容。

「Java 語言靠群體的力量而非公司的力量」是 Sun 公司的口號之一,並獲得了廣大軟體開發商的認同。這與微軟公司所倡導的注重精英和封閉式的模式完全不同。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/185388.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-26 12:18
下一篇 2024-11-26 12:19

相關推薦

  • 如何在樹莓派上安裝Windows 7系統?

    隨著樹莓派的普及,許多用戶想在樹莓派上安裝Windows 7操作系統。 一、準備工作 在開始之前,需要準備以下材料: 1.樹莓派4B一台; 2.一張8GB以上的SD卡; 3.下載並…

    編程 2025-04-29
  • IDEA Java發送郵件出現錯誤解決方案

    IDEA Java是一款常用的Java開發工具,很多開發者都使用它來開發Java應用程序。然而,在使用IDEA Java發送郵件時,有可能會出現一些錯誤。本文將從多個方面對該錯誤進…

    編程 2025-04-29
  • 如何配置Python環境變數在Windows 11

    在本文中,您將學習如何在Windows 11操作系統上配置Python環境變數的步驟。Python是一種高級編程語言,廣泛用於編寫Web應用程序、數據分析、人工智慧和機器學習等。在…

    編程 2025-04-29
  • 如何在Windows系統下載和使用cygwin?

    如果你是一名Windows系統的開發者,你可能會遇到一個問題,那就是缺少Unix/Linux系統下常用的命令行工具,這時候,你可以使用cygwin來解決這個問題。 一、cygwin…

    編程 2025-04-27
  • 蘋果電腦安裝Windows教程

    下面將介紹如何在蘋果電腦上安裝Windows操作系統。 一、獲取Windows操作系統鏡像文件 首先,我們需要去Microsoft官網下載Windows操作系統的鏡像文件。 步驟:…

    編程 2025-04-27
  • 如何使用Python調用Windows窗口?

    本文將為大家解答如何使用Python調用Windows窗口,並提供相關代碼示例。 一、打開應用程序窗口 如果想要打開Windows上的一個應用程序,需要使用Python的os模塊。…

    編程 2025-04-27
  • Python開發的程序能否在Windows下運行

    能夠在Windows下運行是Python的一個優點之一。Python作為一種跨平台語言,可以很方便地在Windows系統上運行 一、Python在Windows上的安裝 Pytho…

    編程 2025-04-27
  • Windows下安裝npm指南

    在當前互聯網發展的時代,前端開發已經成為了程序員不可或缺的一個技能,隨之而來的前端開發工具也逐漸多樣化,而npm就是當下最流行的前端工具之一,下面我們就來詳細介紹一下在Window…

    編程 2025-04-25
  • Windows Server 2012激活碼

    一、激活碼是什麼? 激活碼是用於激活軟體產品的一種序列號,可以通過購買或升級軟體獲得。Windows Server 2012的激活碼可以確保軟體的合法使用,避免非法行為。 激活碼的…

    編程 2025-04-25
  • 如何在Windows/Linux/MacOS下安裝Python

    如果你對Python安裝一無所知,本文將從多個方面對Python在Windows/Linux/MacOS下的安裝做出詳細闡述,為初學者提供幫助。 一、Windows下Python的…

    編程 2025-04-25

發表回復

登錄後才能評論