无法在linux中找到正确的架构类型

时间:2017-07-11 02:55:55

标签: java linux

问题 如何从外部java程序

检查Ubuntu 16.04操作系统上安装的java是32位还是64位

我的研究 -

1)我使用uname -a命令检查了我的Ubuntu架构,显示它是64位

Linux jalaj-SVF14212SNB 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13  00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

2)我检查了在给定路径中安装的java版本 java -XshowSettings:all

VM settings:
Max. Heap Size (Estimated): 853.50M
Ergonomics Machine Class: server
Using VM: Java HotSpot(TM) Server VM

Property settings:
awt.toolkit = sun.awt.X11.XToolkit
file.encoding = UTF-8
file.encoding.pkg = sun.io
file.separator = /
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
java.awt.printerjob = sun.print.PSPrinterJob
java.class.path = /home/jalaj/Java/jdk1.7.0_80/bin
    /home/jalaj/Java/jdk1.7.0_80/jre/bin
    JAVA_HOME/lin
    .
java.class.version = 51.0
java.endorsed.dirs = /home/jalaj/Java/jdk1.7.0_80/jre/lib/endorsed
java.ext.dirs = /home/jalaj/Java/jdk1.7.0_80/jre/lib/ext
    /usr/java/packages/lib/ext
java.home = /home/jalaj/Java/jdk1.7.0_80/jre
java.io.tmpdir = /tmp
java.library.path = /usr/java/packages/lib/i386
    /lib
    /usr/lib
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 1.7.0_80-b15
java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 1.7
java.vendor = Oracle Corporation
java.vendor.url = http://java.oracle.com/
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
java.version = 1.7.0_80
java.vm.info = mixed mode
java.vm.name = Java HotSpot(TM) Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 1.7
java.vm.vendor = Oracle Corporation
java.vm.version = 24.80-b11
line.separator = \n 

os.arch = i386 os.name = Linux

os.version = 4.4.0-31-generic
path.separator = :

sun.arch.data.model = 32

sun.boot.class.path = /home/jalaj/Java/jdk1.7.0_80/jre/lib/resources.jar
    /home/jalaj/Java/jdk1.7.0_80/jre/lib/rt.jar
    /home/jalaj/Java/jdk1.7.0_80/jre/lib/sunrsasign.jar
    /home/jalaj/Java/jdk1.7.0_80/jre/lib/jsse.jar
    /home/jalaj/Java/jdk1.7.0_80/jre/lib/jce.jar
    /home/jalaj/Java/jdk1.7.0_80/jre/lib/charsets.jar
    /home/jalaj/Java/jdk1.7.0_80/jre/lib/jfr.jar
    /home/jalaj/Java/jdk1.7.0_80/jre/classes
sun.boot.library.path = /home/jalaj/Java/jdk1.7.0_80/jre/lib/i386
sun.cpu.endian = little
sun.cpu.isalist = 
sun.desktop = gnome
sun.io.unicode.encoding = UnicodeLittle
sun.java.launcher = SUN_STANDARD
sun.jnu.encoding = UTF-8
sun.management.compiler = HotSpot Tiered Compilers
sun.os.patch.level = unknown
user.country = IN
user.dir = /home/jalaj/Downloads
user.home = /home/jalaj
user.language = en
user.name = jalaj
user.timezone = 

Locale settings:
default locale = English
default display locale = English (India)
default format locale = English (India)
available locales = ar, ar_AE, ar_BH, ar_DZ, ar_EG, ar_IQ, ar_JO, ar_KW, 
    ar_LB, ar_LY, ar_MA, ar_OM, ar_QA, ar_SA, ar_SD, ar_SY, 
    ar_TN, ar_YE, be, be_BY, bg, bg_BG, ca, ca_ES, 
    cs, cs_CZ, da, da_DK, de, de_AT, de_CH, de_DE, 
    de_LU, el, el_CY, el_GR, en, en_AU, en_CA, en_GB, 
    en_IE, en_IN, en_MT, en_NZ, en_PH, en_SG, en_US, en_ZA, 
    es, es_AR, es_BO, es_CL, es_CO, es_CR, es_DO, es_EC, 
    es_ES, es_GT, es_HN, es_MX, es_NI, es_PA, es_PE, es_PR, 
    es_PY, es_SV, es_US, es_UY, es_VE, et, et_EE, fi, 
    fi_FI, fr, fr_BE, fr_CA, fr_CH, fr_FR, fr_LU, ga, 
    ga_IE, hi_IN, hr, hr_HR, hu, hu_HU, in, in_ID, 
    is, is_IS, it, it_CH, it_IT, iw, iw_IL, ja, 
    ja_JP, ja_JP_JP_#u-ca-japanese, ko, ko_KR, lt, lt_LT, lv, lv_LV, 
    mk, mk_MK, ms, ms_MY, mt, mt_MT, nl, nl_BE, 
    nl_NL, no, no_NO, no_NO_NY, pl, pl_PL, pt, pt_BR, 
    pt_PT, ro, ro_RO, ru, ru_RU, sk, sk_SK, sl, 
    sl_SI, sq, sq_AL, sr, sr_BA, sr_BA_#Latn, sr_CS, sr_ME, 
    sr_ME_#Latn, sr_RS, sr_RS_#Latn, sr__#Latn, sv, sv_SE, th, th_TH, 
    th_TH_TH_#u-nu-thai, tr, tr_TR, uk, uk_UA, vi, vi_VN, zh, 
    zh_CN, zh_HK, zh_SG, zh_TW
Usage: java [-options] class [args...]
       (to execute a class)
or  java [-options] -jar jarfile [args...]
       (to execute a jar file)
where options include:
-d32      use a 32-bit data model if available
-d64      use a 64-bit data model if available
-client   to select the "client" VM
-server   to select the "server" VM
-hotspot      is a synonym for the "client" VM  [deprecated]
              The default VM is server,
              because you are running on a server-class machine.


-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
              A : separated list of directories, JAR archives,
              and ZIP archives to search for class files.
-D<name>=<value>
              set a system property
-verbose:[class|gc|jni]
              enable verbose output
-version      print product version and exit
-version:<value>
              require the specified version to run
-showversion  print product version and continue
-jre-restrict-search | -no-jre-restrict-search
              include/exclude user private JREs in the version search
-? -help      print this help message
-X            print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
              enable assertions with specified granularity
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
              disable assertions with specified granularity
-esa | -enablesystemassertions
              enable system assertions
-dsa | -disablesystemassertions
              disable system assertions
-agentlib:<libname>[=<options>]
              load native agent library <libname>, e.g. -agentlib:hprof
              see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
              load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
              load Java programming language agent, see    java.lang.instrument
-splash:<imagepath>
              show splash screen with specified image
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details.

从上面的命令可以清楚地看到我们在32位操作系统上使用32位jre。 虽然,第一和第二点矛盾。

3) 另外,下面是我执行java:

时得到的输出
/home/jalaj/Java/jdk1.7.0_80/bin/java
  

任何人都可以指导如何在给定的操作系统上正确安装java   以及它是32位还是64位。

1 个答案:

答案 0 :(得分:1)

如果您想知道JVM是32 bit还是64 bit风格,而不运行JVM,您可能会检查java二进制文件的体系结构。

检查基于java环境变量找到的PATH二进制文件

file -L `which java`

64位和32位二进制的样本输出

/usr/bin/java: ELF 64-bit LSB executable, ...
/usr/bin/java: ELF 32-bit LSB executable, ...

检查特定目录中的二进制文件

file -L /path/to/jre/java

获取预期的Oracle JDK检查Java SE Development Kit 8 Downloads

获取预期的Oracle JRE检查Java SE Runtime Environment 8 Downloads

获取Ubuntu的预期OpenJDK版本(来自http://openjdk.java.net/install/的指令)

sudo apt-get install openjdk-8-jre