最近开发遇到一个大难题,JDK版本冲突。工作以来头一回遇到这种问题,有点手足无措。最后在公司平台的淫威下(版本为JDK1.4),我不得不妥协:在JDK1.4下头重新开放。
考虑到与平台接触的就小部分的功能,决定用RMI来实现该功能。好在原先开发的功能块之间的耦合度不是很高,直接将单个功能剥离出来的难度不是很大。剩下的就只需要考虑JDK1.4下编译、打包、部署和运行了。
看似很简单的过程,在执行过程中却遇到不小的麻烦,JDBC链接数据库、rmic生成存根和骨架文件命令、jar打包命令…… 好多看似很熟悉的东西在实际过应用程中显的那么脆弱,好多都给忘了,特此将这次经历记录下来。
STEP 1: rmic
1. JDK1.4下会生成存根和骨架文件,但在JDK1.5下只有stub(存根) 文件。
2. rmic rca.serviceImpl.generic0348.ServiceImpl 只能在class存放的根目录下头才能找到ServiceImpl.class, 否则会报错:Class rca.serviceImpl.generic0348.ServiceImpl not found.
STEP 2: jar 生成可执行jar 包
Q: /java1.4/bin/jar cvfm rmiService.jar *.* 打的jar包未设定Main-Class(Failed to load Mani-Class manifest attribute from rmiservice.jar)。
A: 新建一个main.mf 文件,Main-Class: 可执行主类全名(如果打包了的话包含包名),需要回车。
然后执行/java1.4/bin/jar cvfm rmiService.jar main.mf *.*
STEP 3: 运行
原以为这样就可以大功告成,直接在服务器上执行该jar包就行,可最后联调的时候却找不到我放在 rmiService.jar中的 ojdbc14.jar , 因为这样JVM是找不到第三方jar 包的。
1. 在main.mf 文件中添加: Class-Path: classes12.jar lib/class12.jar
2. /opt/j2sdk1.4.2_10/bin/java -Xbootclasspath/a:/product/rmi_server/ojdbc14.jar -jar rmiService.jar
这样JVM 才能加载成功。
链接:在可执行jar 包中动态载入第三方jar class的有关问题
(原地址文章好像被删除,现在附件链接,同时感谢原文作者)
分享到:
相关推荐
Java命令是Java开发和运行过程中不可或缺的工具,它们提供了对JVM(Java虚拟机)的控制,以及对Java程序的编译、打包、文档生成、反编译等操作。以下是对Java常用命令的详细解释: 1. **javac.exe**:Java编译器,...
Java命令是Java开发中不可或缺的一部分,它们用于编译、运行、打包、文档化以及调试Java程序。以下是对这些命令的详细解释: 1. **javac.exe**:Java编译器,负责将源代码(.java文件)转换为字节码(.class文件)...
rmic.jar Server.java javac -classpath .;rmic.jar Client.java ``` #### 11. **运行示例程序** - 启动服务端程序。 ```shell java -classpath .;rmic.jar Server ``` - 运行客户端程序。 ```shell java ...
#### 一、`rmic`命令详解 `rmic`是JDK中用于生成远程接口(实现`java.rmi.Remote`接口)的存根(Stub)和骨架(Skeleton)文件的工具。这些存根和骨架文件能够支持远程方法调用(RMI),使得在不同JVM之间的对象可以...
### JDK命令详细解释 在Java开发领域中,深入理解并掌握JDK(Java ...以上就是关于`rmic`、`rmid`、`rmiregistry`、`serialver`以及`jarsigner`等命令的详细介绍,希望能帮助Java开发者更好地掌握这些实用工具。
安装后,需要设置系统环境变量JAVA_HOME和PATH,确保系统能找到JDK的安装目录和bin目录,以便在命令行中直接运行Java命令。 总结而言,Java JDK 7 64位是Windows开发者进行Java开发必不可少的工具,它提供了全面的...
### Linux常见命令详解 ... - `/opt/jdk/bin` 包含了 `javac`, `java`, `jar`, `rmic`, `jps` 等工具。 以上是对给定文件中的 Linux 命令知识点的详细解释,希望能帮助您更好地理解和使用这些命令。
4. **`.jar`**:Java存档文件,用于打包Java类库或组件。 ### 分离表示逻辑、业务逻辑和数据库交互的应用类型 1. **分布应用**:通常指跨越多台计算机的应用程序。 2. **以服务器为中心的应用**:强调客户端和...
5. 使用`rmic`命令可以生成Stub和Skeleton类,这是RMI(远程方法调用)的一部分。 6. 企业Bean的部署信息通常包含在部署描述符中,如`ejb-jar.xml`文件。 7. 在RMI应用中,若不使用`UnicastRemoteObject`,需要...
使用`rmic`命令可以自动生成Stub和Skeleton类。 11. **Unicode编码的位宽**:Unicode编码使用16位,但可以扩展到32位以容纳更多字符。 12. **Bean的监听器方法**:JavaBeans可以添加各种类型的监听器,例如`...
10. **Stub和Skeleton生成**:使用`rmic`命令来生成RMI(远程方法调用)所需的Stub和Skeleton类。 11. **Unicode编码**:Java的字符类型`char`采用Unicode编码,每个Unicode码占用16个比特位。 12. **监听者注册**...
10. **Stub和Skeleton生成**:在RMI(远程方法调用)中,使用`rmic`命令来生成Stub和Skeleton类,以便客户端能调用服务器端的远程对象。 11. **Unicode编码**:Unicode是一种国际化的字符编码方案,每个Unicode码点...
- 使用`rmic`命令可以生成RMI的Stub和Skeleton类,这些类用于实现远程对象的调用。 ### 6. 部署描述符 - **Deployment Descriptor**(部署描述符)包含了企业bean的部署信息,如EJB的配置、依赖关系等,对于正确...
10. 生成Stub和Skeleton类:使用`rmic`命令来生成RMI(远程方法调用)所需的Stub和Skeleton类,选项C正确。 11. Unicode编码:Unicode编码方案中,每个字符占用16个比特位,选项B正确。 12. 注册事件监听器:将...
--slave /usr/bin/jar jar /opt/jdk1.6.0_11/bin/jar --slave /usr/bin/jarsigner jarsigner /opt/jdk1.6.0_11/bin/jarsigner --slave /usr/bin/javadoc javadoc /opt/jdk1.6.0_11/bin/javadoc --slave /usr/bin...
5. **Java打包工具** (jar):将多个Java类文件打包到一个.jar文件中,便于分发和存储。 6. **Java调试工具** (jdb):用于调试Java应用程序。 7. **其他工具**:如Appletviewer、PolicyTool、Rmic等,用于不同目的的...
- 使用`java`命令运行编译后的类文件。 - 利用JDK提供的工具进行调试、性能分析和优化。 总结来说,JDK 1.8-win-i586是专为Windows 32位系统设计的Java开发工具,它包含了一系列用于编写、运行和调试Java程序所需...
2. `PATH`:将%JAVA_HOME%\bin添加到系统路径中,以便在任何地方都能运行Java命令。 3. `CLASSPATH`:指定查找类文件的路径,通常包括当前目录(".")和JDK的lib目录。 正确配置这些环境变量后,用户就可以在命令行...
- **编译接口**:使用`rmic`命令生成接口的stub和skeleton。Stub是客户端用来调用远程方法的对象,而skeleton是服务器端接收和处理请求的对象。 - **打包到jar**:将生成的stub放入客户端的jar包,skeleton放入...