关于javaenvhelp的信息

博主:adminadmin 2023-01-26 19:15:11 303

本篇文章给大家谈谈javaenvhelp,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java中string user =env("");啥意思?

env应该是一个返回String类型的一个方法,返回的值赋值给user变量

java 调用so文件

用JNI实现

实例:

创建HelloWorld.java

class HelloWorld

{

private native void print();

public staticvoid main(String[] args)

{

new HelloWorld().print();

}

static

{

System.loadLibrary("HelloWorld");

}

}

注意print方法的声明,关键字native表明该方法是一个原生代码实现的。另外注意static代码段的System.loadLibrary调用,这段代码表示在程序加载的时候,自动加载libHelloWorld.so库。

编译HelloWorld.java

在命令行中运行如下命令:

javac HelloWorld.java

在当前文件夹编译生成HelloWorld.class。

生成HelloWorld.h

在命令行中运行如下命令:

javah -jni HelloWorld

在当前文件夹中会生成HelloWorld.h。打开HelloWorld.h将会发现如下代码:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include jni.h

/* Header for class HelloWorld */

#ifndef _Included_HelloWorld

#define _Included_HelloWorld

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: HelloWorld

* Method: print

* Signature: ()V

*/

JNIEXPORT void JNICALL Java_HelloWorld_print

(JNIEnv *, jobject);

#ifdef __cplusplus

}

#endif

#endif

该文件中包含了一个函数Java_HelloWorld_print的声明。这里面包含两个参数,非常重要,后面讲实现的时候会讲到。

实现HelloWorld.c

创建HelloWorld.c文件输入如下的代码:

#include jni.h

#include stdio.h

#include "HelloWorld.h"

JNIEXPORT void JNICALL

Java_HelloWorld_print(JNIEnv *env, jobject obj)

{

printf("Hello World!\n");

}

注意必须要包含jni.h头文件,该文件中定义了JNI用到的各种类型,宏定义等。

另外需要注意Java_HelloWorld_print的两个参数,本例比较简单,不需要用到这两个参数。但是这两个参数在JNI中非常重要。

env代表java虚拟机环境,Java传过来的参数和c有很大的不同,需要调用JVM提供的接口来转换成C类型的,就是通过调用env方法来完成转换的。

obj代表调用的对象,相当于c++的this。当c函数需要改变调用对象成员变量时,可以通过操作这个对象来完成。

编译生成libHelloWorld.so

在Linux下执行如下命令来完成编译工作:

cc -I/usr/lib/jvm/java-6-sun/include/linux/

-I/usr/lib/jvm/java-6-sun/include/

-fPIC -shared -o libHelloWorld.so HelloWorld.c

在当前目录生成libHelloWorld.so。注意一定需要包含Java的include目录(请根据自己系统环境设定),因为Helloworld.c中包含了jni.h。

另外一个值得注意的是在HelloWorld.java中我们LoadLibrary方法加载的是

“HelloWorld”,可我们生成的Library却是libHelloWorld。这是Linux的链接规定的,一个库的必须要是:lib+库

名+.so。链接的时候只需要提供库名就可以了。

运行Java程序HelloWorld

大功告成最后一步,验证前面的成果的时刻到了:

java HelloWorld

如果你这步发生问题,如果这步你收到java.lang.UnsatisfiedLinkError异常,可以通过如下方式指明共享库的路径:

java -Djava.library.path='.' HelloWorld

当然还有其他的方式可以指明路径请参考《在Linux平台下使用JNI》。

我们可以看到久违的“Hello world!”输出了。

jdk升级17docker如何部署

关注

在将java应用部署到docker环境的过程中,一个支持运行java程序的镜像是必不可少的。由于oracle授权方面的问题,docker hub 上一般只有基于openjdk的镜像,而且open jdk的镜像不支持字体管理,在使用一些验证码功能时会报错,比如生成验证码功能等。

而且openjdk 的镜像过于庞大,openjdk:17-slim的镜像大小就有407M。基于这些原因,我们可以选择定制一个java运行环境镜像。

jre制作

由于jdk的体积比较大,我们选择jre来作为运行环境,jdk1.8及以前的版本,都是有jre的,但是jdk9以后的版本不在提供jre需要自己制作。

jlink是通过按模块打包的,但是由于目前很多库还不是按模块打包的,所以我们无法知道项目里面都用了那些模块。只好将所有的模块进行打包。这样避免以后出现缺失模块导致应用报错的问题。

下面是windows平台的打包命令

bin\jlink.exe --module-path jmods --add-modules ALL-MODULE-PATH --compress=2 --strip-debug --output jre

1

1

linux下,需要将要打包的java配置到系统环境变量中,不然生成不了,会报jlink not find错误

bin/jlink --module-path jmods --add-modules ALL-MODULE-PATH --compress=2 --strip-debug --output jre17

1

1

–strip-debug 不打包调式信息 --compress=2 开启2级别压缩,这两项减小生成的文件体积

–add-modules ALL-MODULE-PATH表示所有模块

镜像制作

基于alpine镜像

拉取alpine镜像

docker pull alpine

1

1

alpine镜像非常小,只有5.59MB,可以通过docker run -it {iamgeId} sh 运行容器,运行一些简单的命令试试

D:\repo\docker\javadocker run -it c059bfaa849c sh

/ # ls

bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var

1

2

3

1

2

3

编写dockerfile

FROM alpine:latest

MAINTAINER lin

#更换aline源

RUN echo "" /etc/apk/repositories

RUN echo "" /etc/apk/repositories

#update apk

RUN apk update apk upgrade

RUN apk --no-cache add ca-certificates

# bash vim wget curl net-tools

RUN apk add bash bash-doc bash-completion

RUN apk add vim wget curl net-tools

RUN rm -rf /var/cache/apk/*

RUN /bin/bash

#setup glibc

RUN wget

RUN wget

RUN wget

RUN wget

RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub

RUN apk add glibc-2.32-r0.apk

RUN apk add glibc-bin-2.32-r0.apk

RUN apk add glibc-dev-2.32-r0.apk

RUN apk add glibc-i18n-2.32-r0.apk

RUN rm -rf *.apk

#setup date

RUN apk add tzdata

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#setup language 解决中文乱码

RUN /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8

ENV LANG=en_US.UTF-8

#copy jdk-8u251-linux-x64.tar.gz

ADD jdk-8u251-linux-x64.tar.gz /usr/local

#setup java env

ENV JAVA_HOME=/usr/local/jdk1.8.0_251

ENV PATH=$PATH:.:$JAVA_HOME/bin

ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

构建镜像

docker build -t jdk17-orcle-alpine .

1

1

总结:由于alpine缺少很多东西,比如glibc,需要安装后才能运行jvm,所以暂时放弃这条路

自己安装glibc比较麻烦,可以使用已经安装好glibc的镜像

#FROM alpine:latest

FROM frolvlad/alpine-glibc

MAINTAINER lin

COPY ./jre17 /usr/local/jre17

#setup java env

ENV JAVA_HOME=/usr/local/jre17

ENV PATH=$PATH:$JAVA_HOME/bin

ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

该方法构建的镜像体积是比较小,但是启动java应用(基于spring boot)的时候jvm会崩溃,原因不明

基于ubuntu

ubuntu镜像相对来说也不是很大,才70多M

FROM ubuntu:latest

MAINTAINER lin

#更新软件源

RUN apt-get update

#安装字体支持

RUN apt-get install fontconfig -y

#清理缓存

RUN apt-get clean

#在windows环境下构建,将/usr/share/zoneinfo/Asia/Shanghai拷贝到本地目录

COPY ./Shanghai /etc/localtime

#setup language 解决中文乱码

#设置中文支持

ENV LANG C.UTF-8

#解压jdk并删除lib目录下的源码

COPY ./jre17 /usr/local/jre17

#授执行权限

RUN chmod -R 750 /usr/local/jre17/bin

#setup java env

ENV JAVA_HOME=/usr/local/jre17

ENV PATH=$PATH:$JAVA_HOME/bin

ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

构建

docker build -t mydockerhub:5000/jdk17-orcle-ubuntu:jre-17 .

1

1

总结:除了需要处理语言问题外,其他都比较顺利,而且结果镜像211MB,比官方提供的小了很多,暂时就这样吧,以后有时间再折腾

打开CSDN,阅读体验更佳

最新发布 Docker部署SpringBoot项目(超详细)

Docker部署SpringBoot项目(超详细)

继续访问

JDK17抽取JRE并制作docker镜像

jre docker

继续访问

docker 搭建 Oracle JDK(版本可更换) 镜像

首先在本机创建jdk目录 mkdir -p /root/jdk 下载jdk到/root/jdk目录下 (版本随意)也可以直接使用 rpm 下载,各凭本事(!.!) 这里我下载的版本是jdk-8u211-linux-x64.tar.gz 在/root/jdk目录下创建Dockerfile文件 vim Dockerfile 内容为 # 基础镜像为 ce...

继续访问

Linux 安装 jdk8-17、运行 jar

前提是先把网络ip配置好官网下载地址: jdk各个版本下载 jdk各个版本档案A:网上随便兽兽道首;file–connect—hostName(linux的ip)—user name(系统用户)—prot(端口:默认)–authentication(选择password)—点击connect后----输入密码选中点击鼠标右键—Upload----- 删除 3.Ubuntu卸载jdk 4、在Linux解压文件 三、

继续访问

免密登录容器dockerfile ,docker部署openjdk-17 免密登录容器dockerfile

免密登录容器dockerfile

继续访问

笔记:Docker创建最小JDK运行环境

JDK1.8 Docker最小镜像

继续访问

jre-7u17-windows-x64.exe

JDK是一个开发环境,用于构建应用程序,applet程序,和使用Java编程语言的组成部分。 Java Development Kit(JDK)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 定于2月19日发布的Java SE原来的重要补丁更新 - 2013年2月,但甲骨文决定加快释放该重要补丁更新,因为积极开发“野生”的Java漏洞影响在桌面浏览器,运行时环境(JRE)与该重要补丁更新解决。 更新日志:JDK 7u17 发布,该版本修复了浏览器插件的严重的安全漏洞:CVE-2013-1493,Oracle 强烈建议使用 Java 浏览器插件用户升级。 重要补丁更新是针对多个安全漏洞的补丁集合。为Java SE重要补丁更新还包括非安全修复程序。重要补丁更新是累积性的,每个公告只描述自上一个重要补丁更新和安全警报添加的安全修复。因此,以前的重要补丁更新和安全警报建议应检讨有关以前累积的安全修复程序。 请参考: 重要补丁更新和安全警报的信息,有关Oracle安全性公告。 由于一个成功的攻击所带来的威胁,Oracle强烈建议用户尽快应用CPU修复程序。该重要补丁更新包含50个新安全修复程序的Java SE的产品。 支持受影响的产品 该重要补丁更新解决的安全漏洞影响以下按类别列出的产品。请点击可用补丁列或可用补丁表中的链接来访问这些补丁的文档。

Java17 安装教程与环境配置(完整版)

Java17 安装教程与环境配置(完整版)掉坑经历安装步骤环境配置 掉坑经历 今天做项目的时候,发现新项目用的的spring-boot-starter-parent是最新的,一开始我使用2.5.7一直爆红,当时想着降低版本就能使用了,然后被告知,jdk需要最新版本的,才能运行项目。于是乎,开始找教程,但是我看了好几篇教程,都没正确找到最新jdk下载,这里拿个别人博文给的链接,结果你发现,你打开

继续访问

jre17 面向对象+集合的练习

简单的初学者综合练习

继续访问

使用docker容器运行java程序

使用docker容器运行java程序 java 18 一、文件准备 mkdir 11 cd 11 创建并进入目录 docker pull ubuntu:22.04 wget #sudo vim dockerfile内容如下 From ubuntu:22.04 Maintainer webrx "webrx@126.com" #把java添加到容器中 Add jdk-1

继续访问

docker安装JDK

docker安装jdk有很多种方式,这里使用自己构建镜像的方式。 1.下载jdk安装包 安装包下载可以自己去官网下载,如果闲速度慢可以找一些网络资源; 安装包下载好后,上传到/usr/local/docker/jdk下,这个文件目录需要自己创建 2.创建Dockerfile 在/usr/local/docker/jdk文件夹下创建Dockerfile,Dockerfile内容如下: FROM centos:centos7 MAINTAINER tao # 新建目录 RUN mkdir /usr

继续访问

jre.17_32位

jre.17_32位,适用于JAVA空间,安装在windows操作系统中!

jdk8、jdk11、jdk17版本下载

jdk8、jdk11、jdk17版本是长时间支持的版本

Java17(291)之后 , 禁用了TLS1.1 , 使JDBC无法用SSL连接SqlServer怎么办,以下是解决办法

修改java.security文件 1.找到jre的java.security文件 2.打开java.security并搜索 “jdk.tls.disabledAlgorithms=” 3.删掉TLSv1, TLSv1.1, 4.保存,可以了 修改后的样例,jre17可直接复制 修改java.security文件 1.找到jre的java.security文件 如果是jre , 在 {JAVA_HOME} / jre / lib / security中, 比如👇 C:\Java\jdk-17.0.3.1\c

继续访问

docker构建jdk基础镜像,部署程序

docker构建jdk基础镜像

继续访问

Docker工具的使用

初识 Docker jdk的版本问题,环境造成的问题很常见,称为代码的水土不服 把环境和代码一起传过去 软件跨环境迁移的问题就解决了 Docker 是一个开源的应用容器引擎 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。 容器是完全使用沙箱机制,相互隔离 容器性能开销极低。 Docker 从 1.

继续访问

热门推荐 jdk、jre各版本下载

jdk、jre各版本下载 JDK安装包中是包含JRE的。两者都可以单独下载安装。 安装包的下载官网: 当前最新版本出到了Java SE 10.0.1;官网上JRE分为JRE和ServerJRE。 JRE、ServerJRE 选择的区别如下图: 即JRE是...

继续访问

java17+javaFX17+openCV4.5.5 实现远程桌面功能 最全完整版

使用java17+javaFX17+openCV4.5.5+springboot开发的远程桌面客户端和服务端 99%通过JAVA实现,优化了CPU占用、内存占用、网络占用 新手小白也可以根据文章玩得转

继续访问

docker安装jdk并运行若依后端jar包

为了以后吹牛逼, 采用jdk8+centos镜像 =jdk镜像 吧jar包扔进持久化文件里 1 下载centos 下载指定centos镜像 docker pull centos:centos7 最新的版本docker pull centos 两百兆的系统 不可思议 2 下载jdk 就是下个linux版jdk8 传到服务器/home/docker/jdk # 路径 cd /home/docker/jdk # 解压 tar -zxvf jdk-8u291-linux-x64.tar.gz 编写D

继续访问

JDK和JRE下载大全

JDK下载和环境变量配置

继续访问

Linux系统下Java环境变量的设置

从java.sun.com上下载JDK的安装文件,一般是jdk1.5.0_10_XXXX.bin的格式。

解开生成JDK目录,这里假设JDK安装在/usr/java/jdk1.5.0_10中:

代码:

sudo chmod 755 jdk1.5.0_10_XXXX.bin

sudo ./jdk1.5.0_10_XXXX.bin

sudo mkdir /usr/java

sudo mv jdk1.5.0_10/ /usr/java

代码:

sudo gedit /etc/profile

在这个文件的末尾追加:

代码:

export JAVA_HOME=/usr/java/jdk1.5.0_10/

#注意把新添加的JDK的bin目录追加在$PATH的最前面,这样当系统中安装有多个JDK版本时,程序会优先搜寻排在最前面的JDK版本。

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

保存/etc/profile之后,别忘了执行下面这个命令,使环境变量的更改马上起作用。

代码:

source /etc/profile

如果执行上面这个命令时报错,请仔细检查你在/etc/profile里新增的文本是不是有错。

最后检查环境变量更改是否生效:

代码:

java -version

-----

下面是另一种

1、下载需要的jdk( 我的是 jdk-6u2-linux-i586-rpm.bin),放在/home目录。

2、

#cd /home

#cp jdk-6u2-linux-i586-rpm.bin /usr/local

#cd /usr/local

(给所有用户添加可执行的权限)

#chmod +x jdk-6u2-linux-i586-rpm.bin

# ./jdk-6u2-linux-i586-rpm.bin

( 有可能会生成jdk-6u2-linux-i586-rpm文件,若是,则#chmod +x jdk-6u2-linux-i586-rpm, 然后 #rpm -ivh jdk-6u2-linux-i586-rpm. 若非,即直接进入安装程序)

出现安装协议,一直enter最后到y接受。

3、设置环境变量。

若是只是当前用户:

#vi /etc/profile

在最后加入 (与 xp中cmd设置一样)

#set java environment

JAVA_HOME = /usr/java/jdk1.6.0_02

CLASSPATH =.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

PATH = $JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PAHT

esc 回到命令模式,:wq 退出。

若是要在所有用户中使用:

vi /etc/profile.d/java.sh

在新的java.sh中输入上面情况中在末尾添加的内容:

保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh

保存/etc/profile之后,别忘了执行下面这个命令,使环境变量的更改马上起作用。

代码:

source /etc/profile

如果执行上面这个命令时报错,请仔细检查你在/etc/profile里新增的文本是不是有错。

最后检查环境变量更改是否生效:

代码:

java -version

4、可在终端个查看环境变量设置情况:

#echo $JAVA_HOME

#echo $CLASSPATH

#echo $PATH

5、检查JDK 是否成功安装:

#java -version

#javac -?

初学者设置java环境变量

下面是我看到的一个比较不错的方法,至于自己手动设置的,到百度一搜大把。我就不转了。

看到很多初学者反复问这个问题,写了一个很简单的一个脚本,用于自动设置环境变量。把代码拷贝,另存为javaEnv.bat。安装完Java 2 SDK之后,开一个命令行窗口,输入javaEnv java2SDKDir(java2SDKDir是你的java的安装目录,不带路径最后的\。如果安装路径中有空格,请用javaEnv "java2SDKDir"格式)并运行。(注:一定要在javaEnv后边加上你的sdk的目录,setx的问题可以看这里)

@echo 你提供的jdk安装目录为:%1

@echo off

IF EXIST %1\bin\java.exe (

rem 如输入正确的 Java2SDK 安装目录,开始设置环境变量

@setx JAVA_HOME %1

@setx path %JAVA_HOME%\bin;%path%

@setx classpath %classpath%;.

@setx classpath %classpath%;%JAVA_HOME%\lib\tools.jar

@setx classpath %classpath%;%JAVA_HOME%\lib\dt.jar

@setx classpath %classpath%;%JAVA_HOME%\jre\lib\rt.jar

@echo on

@echo Java 2 SDK 环境参数设置完毕,正常退出。

) ELSE (

IF %1=="" (

rem 如没有提供安装目录,提示之后退出

@echo on

@echo 没有提供 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。

) ELSE (

rem 如果提供非空的安装目录但没有bin\java.exe,则指定的目录为错误的目录

@echo on

@echo 非法的 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。

)

)

请打开另外一个窗口测试

运行

path

set classpath

也可参考 这里进行设置。

关于javaenvhelp和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。