【游戏源码太原】【同创源码网络】【飞凤源码论坛】java wiki源码

时间:2024-12-28 13:31:05 分类:云进销存源码支持手机版 来源:只吃鱼身源码

1.一个简单的源码例子教会您使用javap
2.Springboot+RXTX for JAVA 实现串口通信

java wiki源码

一个简单的例子教会您使用javap

       javap是JDK自带的工具。

       下面这段简单的源码Java代码将作为讲解的例子。

       通过以下命令行对NullableTest进行反编译,源码以获取java编译器生成的源码字节码:

       javap -v NullableTest >c:\code\1.txt

       接下来,我们将查看方法way1()对应的源码字节码。

       以下wiki提供了java字节码中每个指令的源码游戏源码太原详细说明:

       en.wikipedia.org/wiki/J...

       现在,让我们对NullableTest反编译得到的源码字节码进行一些说明:

       0: invokestatic # // Method getInitializedOuter:()Ljava8/Outer;

       这表示调用静态方法getInitializedOuter,其返回类型为Outer。源码

       3: astore_0

       上述静态方法调用返回的源码outer引用被存储在局部变量中,其ID为0。源码

       4: aload_0

       由于在Java源代码中,源码我已经将静态方法返回的源码对象引用与null进行了比较,因此使用aload_0指令将存储在ID为0的源码局部变量中的对象引用重新加载到栈上,以便与null进行比较。源码

       5: ifnull

       这是源码我在Java源代码中编写的IF分支。如果检测到的outer引用为null,则直接返回。在字节码中,如果ifnull为true,则跳转到第行字节码,即直接返回。同创源码网络

       如果ifnull不为true,则继续执行下去。outer引用再次加载到栈上。

       从字节码的分析中,我们可以观察到有趣的现象。再次看看我们的IF语句。

       Java编译时,编译器实际上将其转换成了以下写法:

       这一事实可以通过以下图表得到确认。

       javap生成的字节码中的LineNumberTable非常有用。这张表中每行的飞凤源码论坛line后面的数字代表Java源代码的序号,line XX冒号后面的数字代表字节码中每行指令的序号。以下是Java源代码和对应的字节指令在LineNumberTable中的映射关系。

       LineNumberTable维护了Java源代码与字节指令的映射关系,确保了Java代码调试的顺利进行。

Springboot+RXTX for JAVA 实现串口通信

       下载RXTX可以从官网或者Fizzed网站,官网没有位的支持,但在Fizzed中可以找到2.2版的位和位的Windows和Linux版本。

       1. Windows下的串口调试

       将rxtxParallel.dll和rxtxSerial.dll复制到%JAVA_HOME%安装目录的bin目录下,同时也要复制到%JAVA_HOME%安装目录的jre/bin目录下(在eclipse开发时调用,减少麻烦)。进货商城源码然后将RXTXcomm.jar复制到%JAVA_HOME%\jre\lib\ext\RXTXcomm.jar(开发时直接导入)。

       2. Linux下的串口调试

       首先确定Linux处理器型号,然后选择对应的RXTX的Linux版本。

       例如,如果处理器是i,则将Linux i版本中的两个os文件复制到系统%JAVA_HOME%/jre/lib/i(即JDK目录中的系统文件夹)。将RXTXcomm.jar复制到%JAVA_HOME%/jre/lib/ext文件夹。代码不变,即可运行使用。

       在实际开发中,chrome程序源码由于使用树莓派测试,树莓派使用Raspbian系统(使用uname -a命令可查看系统内核信息)。Linux raspberrypi 3..+ # PREEMPT Mon Sep 8 :: BST armv6l GNU/Linux。处理器型号为armv6l,在下载的RXTX工具包中并没有这种系统版本,实际测试中,找到的RXTX工具包都不能使程序运行,均报出系统位数不符。

       又找到另一种处理方法,可以直接在系统中make编译RXTX源码安装。

       最新的RXTX稳定版本是rxtx 2.1-7r2。首先用wget获取源码包并解压。

       如果直接MAKE编译安装,可能会遇到以下两种错误:

       错误1:/tmp/rxtx-2.1-7r2/./src/I2CImp.c:: error: ‘UTS_RELEASE’ undeclared (first use in this function)

       这是由于version.h中缺少’UTS_RELEASE’信息,需要手工添加。先获取当前系统的版本信息,然后在/usr/include/Linux/version.h中添加。

       3..+为上一步中获得的版本号

       错误2:libtool: install: armv6l-unknown-linux-gnu/librxtxRS.la is not a directory

       这个错误会出现在JDK1.6及以上的运行环境下,需要对configure文件进行修改。在configure文件中找到这一行,在后边添加上当前JDK的版本号即可,如

       完成以上两项修改后,就可以正常编译安装了。如果看到 Libraries have been installed in:/usr/lib/jvm/jdk-7-Oracle-armhf/jre/lib/arm 则说明RXTX安装已经成功。之后执行

       注意:可能会有权限不足的情况,需要chmod test.c操作

       至此使用RXTX框架的串口编程代码就可以在树莓派使用了。

       (这里需要注意的是,在Linux系统中,大部分的串口名称为/dev/ttyS*,但在特殊环境下如本次使用的raspberrypi,使用RXTX方法获得串口集合是不成功的,原因是RXTX本身源码问题,找了好久的原因,终于在RXTX官网上找到了解释:

       即RXTX本身支持的Linux串口搜索只限制为/dev/ttyS*等,其他名称的并不能支持,而raspberrypi中的串口名称为/dev/ttyAMA*,故无法找到系统串口。这种情况下有两种解决方案:

       1.修改源码:参考官网故障排除 rxtx.qbang.org/wiki/ind...

       源码RXTXCommDriver.java文件中行开始,为Linux系统环境下的串口名称查找,添加所需串口名即可(如ttyAMA)(此种方法需要重新编译安装)

       2.将串口文件进行映射,即使用命令 ln -s /dev/ttyAMA0 /dev/ttyS0,即可找到/dev/ttyS0映射串口,也就对应了/dev/ttyAMA0实际串口。