最近在做一个和版权保护相关的项目,前面几篇博文也是和这个项目有关的。随着项目需求的不断完善,实现的方法也在逐步做小的修改。
昨天接到了需求是把我用C语言写的库封装一层java程序,把这个程序做成*jar包的形式,以供别人的程序调用。
博主在2007年接触过java,并且考取了java二级,不过经历了14年的低档,这些东西基本都忘记了。昨天又重新查找资料复习了一下java的知识。现在记录一下ubuntu下java调用自己做的*.jar包的注意事项。
1.首先在当前目录建立 com/baidu/ 子目录,并且在这个目录创建Demo.java程序
package com.baidu;
public class Demo
{
public String getInfo() {
return "Hello, world!!!";
}
}
2.在 com/baidu 目录下执行 javac Demo.java 命令结果是在 com/baidu 生成 Demo.class 文件

3.进入和 com 同级的目录

4.执行 jar cvf my.jar com 命令,对 com 文件夹打包

从命令的输出可以看到
added manifest
adding: com/(in = 0) (out= 0)(stored 0%)
adding: com/baidu/(in = 0) (out= 0)(stored 0%)
adding: com/baidu/Demo.java(in = 100) (out= 94)(deflated 6%)
adding: com/baidu/Demo.class(in = 287) (out= 225)(deflated 21%)
这是压缩进 my.jar 的具体内容。
压缩完成之后我们看到在 learn_java 目录下多了一个 my.jar 文件。
5.进入 com/baidu 目录删除 Demo.class 文件(删除的目的是为了确定后面步骤中编译和运行其他程序用的是 my.jar)

6.然后返回 com 文件夹编写 TestDemo.jave 文件
import com.baidu.Demo;
public class TestDemo
{
public static void main(String[] args)
{
Demo demo = new Demo();
System.out.println(demo.getInfo());
}
}
在 TestDemo.java 文件的首行我们导入了 com.baidu.Demo 类。
7.执行 javac -cp my.jar TestDemo.java 命令引用 my.jar 包一起编译 TestDemo.java 文件

我们看到命令执行之后,在同级目录下生成了 TestDemo.class 文件。
8.执行 set classpath my.jar 设置环境变量,把 my.jar 放进 classpath 里,然后再次调用 javac TestDemo.java 命令编译 TestDemo.java 程序

9.执行 java TestDemo 命令进行测试

从输出我们看到执行了 my.jar 里的方法。
注:
我们看到第七步用了 -cp 参数编译 my.jar 和 TestDemo.java ,这样编译也确实生成了 TestDemo.class,但是当我们执行 java -cp my.jar TestDemo 命令时,却报错不能产生正确的输出

所以我们采用了第 8,9 步的方式来调用的 my.jar 包,并且出现了期望中的结果。
本篇文章参考:https://jingyan.baidu.com/article/ceb9fb10c219a18cac2ba07c.html

本文记录了一位开发者如何在Ubuntu环境下将C语言编写的库封装为Java程序,并制作成jar包供其他程序调用的过程。详细阐述了从创建Java类、编译、打包到测试的每一步骤,包括使用javac和jar命令,以及如何设置classpath来正确调用jar包中的方法。文章适合对Java和C语言混合编程感兴趣的读者。
1138

被折叠的 条评论
为什么被折叠?



