Explorar el Código

初次提交。

gaodongliang hace 3 años
commit
95128b0d6f
Se han modificado 3 ficheros con 66 adiciones y 0 borrados
  1. 25 0
      pom.xml
  2. 16 0
      src/main/java/demo/GoodLuck.java
  3. 25 0
      src/main/resources/read

+ 25 - 0
pom.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>media</groupId>
+    <artifactId>media</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.tomcat.maven</groupId>
+                <artifactId>tomcat7-maven-plugin</artifactId>
+                <version>2.1</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 16 - 0
src/main/java/demo/GoodLuck.java

@@ -0,0 +1,16 @@
+package demo;
+
+/**
+ * 测试demo类
+ * @author hgl
+ */
+public class GoodLuck {
+    public native  int computeByRule(int a, int b);
+    static {
+        System.load("/root/libgoodluck.so");
+    }
+    public static void main(String [] args) {
+        GoodLuck goodLuck =  new GoodLuck();
+        System.out.println(goodLuck.computeByRule(16, 18));
+    }
+}

+ 25 - 0
src/main/resources/read

@@ -0,0 +1,25 @@
+1:编制需要的java类, 主要补充 native 和 加载so类;
+2:编译该类 使用javac命令;
+3:反向生成 c的头文件使用 命令:javah -classpath . -jni media.HelloUtil
+此步骤需要注意的是 class文件请放入 指定的包名文件夹下面。如果包名多 就包含子文件夹。
+该命令一个空格不能少。在根包下的上一层 使用该命令。
+4:编制c头文件对应的实现逻辑文件。
+#include<stdio.h>
+#include "demo_GoodLuck.h"
+
+JNIEXPORT jint JNICALL Java_demo_GoodLuck_computeByRule
+        (JNIEnv *env, jclass jc, jint j, jint k) {
+return j * k;
+}
+该文件可以随意命名。
+
+5:生成so文件:
+g++ -fPIC -shared -o libgoodluck.so  ComputeByRule.c -I/usr/local/jdk1.8.0_144/include -I/usr/local/jdk1.8.0_144/include/linux
+so文件 请以lib开头,以.so 结尾。
+
+6:测试该文件:
+java -classpath . demo.GoodLuck
+测试成功,注意 该命令也要根目录的上层使用。
+
+7:g++ -o calling calling.o 可以在linux上编译文件
+