把自己的程序打成jar包,让别人调用

 我们写程序的时候往往需要把自己的程序打包成jar 包,给第三方调用。Eclipse让我们非常方便的可以导出jar 包。但是当程序里需要用到res里的资源时,往往就会出现问题。因为统自动生成的 R 类如果被打到 jar 包中后,就失去了索引资源的作用。导致封装成 jar 包的 view 无法获取对应资源。因为 R 类的属性值是在应用编译打包时由系统自动分配的。 R 类打包之后失效,实际是因为 R 类的内部类里面的属性失效,因为打包之后这些属性的值就固定了,但是实际项目中这些值是在编译时有系统自动分配的,无法在编译前固定。
本文就提供一种方法,解决这个问题。
首先建立一个AndroidJar项目。这个项目将来就是要打成jar 包的项目。
结构如下:
<ignore_js_op>  
然后再建立一个AndroidJarTest项目。这个项目就是应用jar 包的项目。
AndroidJar写好后,就是导出jar 包。相信大家都非常熟悉,步骤如下:
1.选中AndroidJar,右键选择export
2.选择 jar file 。只需导出源码。如图:
<ignore_js_op> 
1.然后点击finish。就可以导出jar包了。
AndroidJarTest项目对jar包的应用方法。
     1.AndroidJarTest项目下建立一个libs文件夹,再把刚才导出的jar包放到里面。再把jar包加到java build path的路径里。
<ignore_js_op>
2.因为刚才只是把AndroidJar的源码打成了jar包。但是资源并没有打包。所以现在要把AndroidJar项目里的资源。拷贝到AndroidJarTest的项目下。具体就是res下的文件。因为太简单,这里就不演示怎么拷了。
2.最后要在AndroidJarTest的AndroidManifest.xml里注册AndroidJar里的activityservicereceiver。很多广告插件都是这么做的。相信大家都非常熟悉。
[Java]  纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
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
<application
android:icon= "@drawable/ic_launcher"
android:label= "@string/app_name" >
<activity
android:label= "@string/app_name"
android:name= ".AndroidJarTestActivity" >
<intent-filter >
<action android:name= "android.intent.action.MAIN" />
 
<category android:name= "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
 
<!-- AndroidJar 里的activity,service和receiver-->
<activity
android:name= "com.song.test.FirstActivity"
android:screenOrientation= "portrait"
android:theme= "@android:style/Theme.NoTitleBar" >
</activity>
 
<activity
android:name= "com.song.test.AndroidJarActivity"
android:screenOrientation= "portrait"
android:theme= "@android:style/Theme.NoTitleBar" >
</activity>
 
<service android:name= "com.song.test.service.HelloService" >
</service>
 
<receiver android:name= "com.song.test.receiver.ToastReceiver" >
<intent-filter >
<action android:name= "MAKE_TOAST_ACTION" />
</intent-filter>
</receiver>
<!-- AndroidJar 里的activity,service和receiver-->
</application>

    在AndroidJarTest里就只要一个其他的activity。它负责跳转到AndroidJar里。AndroidJar里就三个按钮分别是启动一个服务,每隔10秒就发出一个广播,然后广播接收到后就弹出一个toast,“大家好,我是苍老师!”和一个停止服务。最下面一个就是跳到一个有苍老师的界面。
<ignore_js_op><ignore_js_op><ignore_js_op>
程序相当简单。其中根据资源创建view,和根据资源找到相应字符的核心类为ResManager。大家可以下载源码,研究研究。


<ignore_js_op> 该贴已经同步到 feathersong的微博
<ignore_js_op>

转载于:https://www.cnblogs.com/dongweiq/p/4250401.html

将 MATLAB 函数编译为 JAR 并在 Java 项目中调用是一个涉及多个步骤的过程,主要括 MATLAB 函数的打、Java 环境的配置以及调用逻辑的实现。以下是详细的实现步骤: ### 1. 编写并测试 MATLAB 函数 首先,在 MATLAB 中编写需要导出为 JAR 的函数,并确保其功能正确无误。 ```matlab % 示例:test.m function y = test(n, a, b, c) y = n + a + b + c; end ``` 在命令行中测试该函数以确认其输出符合预期。 ### 2. 使用 MATLAB Compiler SDK 打为 Java 组件 打开 MATLAB 命令窗口,使用 `libraryCompiler` 工具或命令行方式将函数编译为 Java 可调用的 `.jar` 文件。 #### 方法一:使用 `mcc` 命令行工具 ```bash mcc -W java:com.test.Stage3,test -T link:lib -d output_directory ``` 其中: - `-W java:<package_name>` 指定生成的 Java 名。 - `test` 是你的 MATLAB 函数名。 - `-d output_directory` 指定输出目录。 执行完成后,会生成一个或多个 `.jar` 文件,例如 `Stage3.jar`。 ### 3. 安装生成的 JAR 到本地 Maven 仓库(可选) 如果项目使用 Maven 进行依赖管理,可以将生成的 `.jar` 文件安装到本地仓库。 ```bash mvn install:install-file -Dfile=Stage3.jar \ -DgroupId=com.matlab.javabuilder \ -DartifactId=stage3 \ -Dversion=1.1.0 \ -Dpackaging=jar ``` 随后在 `pom.xml` 中添加依赖: ```xml <dependency> <groupId>com.matlab.javabuilder</groupId> <artifactId>stage3</artifactId> <version>1.1.0</version> </dependency> ``` ### 4. 在 Java 项目中调用 MATLAB 编译后的 JAR 确保项目中已引入 `javabuilder.jar` 和编译生成的 `.jar` 文件作为依赖。 #### Java 调用示例代码: ```java package com.beescloud.frame.matlab; import com.mathworks.toolbox.javabuilder.MWException; import test.Class1; public class MatlabTest { public static void main(String[] args) throws MWException { Class1 myCalClass = new Class1(); Object[] objects = myCalClass.test(3, 1, 2, 3); // 调用 MATLAB 函数 for (int i = 0; i < objects.length; i++) { System.out.println(objects[i]); } System.out.println("调用成功了"); } } ``` 注意: - `test` 是 MATLAB 函数生成的 Java 方法名。 - `Class1` 是 MATLAB 编译器自动生成的类名,请根据实际命名进行替换。 ### 5. 配置运行环境 Java 应用程序运行时需加载 MATLAB Runtime(MCR),否则会抛出异常如 `MCRConfiguration.getModuleDir` 错误[^5]。 #### 设置 MCR_ROOT 环境变量: 在运行 Java 程序前设置环境变量指向 MATLAB Runtime 安装路径: ```bash set MCR_ROOT=C:\Program Files\MATLAB\MATLAB Runtime\v96 ``` 或者在 Java 启动参数中指定: ```bash java -DMCR_ROOT="C:\Program Files\MATLAB\MATLAB Runtime\v96" ... ``` ### 6. 注意事项与常见问题 - **跨平台兼容性**:Windows 和 Linux 下的部署略有不同,需注意路径和 MCR 的版本一致性[^3]。 - **JAR 更新机制**:若修改了 MATLAB 函数并重新打,Java 端无需额外操作即可自动识别新版本(前提是 Build Path 正确配置)[^4]。 - **依赖管理**:确保 `javabuilder.jar` 和 `engine.jar` 被正确引用[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值