java调用文件框框

java中如何调用其他java文件?

你所说的java文件是什么文件?如果是java源码文件是不能调用的,但如果是编译后的class文件可以通过类加载器进行加载,然后通过反射调用;但一般会通过实现特定的接口来简化调用过程。一个自定义的类加载器如下:

 class MyClassLoader extends ClassLoader {  

        //类加载器的名称  

        private String name;  

        //类存放的路径  

        private String path = “E:\\bin”;  

        MyClassLoader(String name) {  

            this.name = name;  

        }  

        MyClassLoader(ClassLoader parent, String name) {  

            super(parent);  

            this.name = name;  

        }  

        /** 

         * 重写findClass方法,加载特定目录下的类文件

         */  

        @Override  

        public Class? findClass(String name) {  

            byte[] data = loadClassData(name);  

            return this.defineClass(name, data, 0, data.length);  

        }  

        public byte[] loadClassData(String name) {  

            try {  

                name = name.replace(“.”, “//”);  

                FileInputStream is = new FileInputStream(new File(path, name + “.class”));  

                ByteArrayOutputStream baos = new ByteArrayOutputStream();  

                int b = 0;  

                while ((b = is.read()) != -1) {  

                    baos.write(b);  

                }  

                return baos.toByteArray();  

            } catch (Exception e) {  

                e.printStackTrace();  

            }  

            return null;  

        }  

    }

java调用文件框框

java 调用so文件

用JNI实现

实例:

创建HelloWorld.java

class HelloWorld

{

private native void print();

public staticvoid main(String[] args)

{

new HelloWorld().print();

}

static

{

System.loadLibrary(“HelloWorld”);

}

}

注意print方法的声明,关键字native表明该方法是一个原生代码实现的。另外注意static代码段的System.loadLibrary调用,这段代码表示在程序加载的时候,自动加载libHelloWorld.so库。

编译HelloWorld.java

在命令行中运行如下命令:

javac HelloWorld.java

在当前文件夹编译生成HelloWorld.class。

生成HelloWorld.h

在命令行中运行如下命令:

javah -jni HelloWorld

在当前文件夹中会生成HelloWorld.h。打开HelloWorld.h将会发现如下代码:

/* DO NOT EDIT THIS FILE – it is machine generated */

#include jni.h

/* Header for class HelloWorld */

#ifndef _Included_HelloWorld

#define _Included_HelloWorld

#ifdef __cplusplus

extern “C” {

#endif

/*

* Class: HelloWorld

* Method: print

* Signature: ()V

*/

JNIEXPORT void JNICALL Java_HelloWorld_print

(JNIEnv *, jobject);

#ifdef __cplusplus

}

#endif

#endif

该文件中包含了一个函数Java_HelloWorld_print的声明。这里面包含两个参数,非常重要,后面讲实现的时候会讲到。

实现HelloWorld.c

创建HelloWorld.c文件输入如下的代码:

#include jni.h

#include stdio.h

#include “HelloWorld.h”

JNIEXPORT void JNICALL

Java_HelloWorld_print(JNIEnv *env, jobject obj)

{

printf(“Hello World!\n”);

}

注意必须要包含jni.h头文件,该文件中定义了JNI用到的各种类型,宏定义等。

另外需要注意Java_HelloWorld_print的两个参数,本例比较简单,不需要用到这两个参数。但是这两个参数在JNI中非常重要。

env代表java虚拟机环境,Java传过来的参数和c有很大的不同,需要调用JVM提供的接口来转换成C类型的,就是通过调用env方法来完成转换的。

obj代表调用的对象,相当于c++的this。当c函数需要改变调用对象成员变量时,可以通过操作这个对象来完成。

编译生成libHelloWorld.so

在Linux下执行如下命令来完成编译工作:

cc -I/usr/lib/jvm/java-6-sun/include/linux/

-I/usr/lib/jvm/java-6-sun/include/

-fPIC -shared -o libHelloWorld.so HelloWorld.c

在当前目录生成libHelloWorld.so。注意一定需要包含Java的include目录(请根据自己系统环境设定),因为Helloworld.c中包含了jni.h。

另外一个值得注意的是在HelloWorld.java中我们LoadLibrary方法加载的是

“HelloWorld”,可我们生成的Library却是libHelloWorld。这是Linux的链接规定的,一个库的必须要是:lib+库

名+.so。链接的时候只需要提供库名就可以了。

运行Java程序HelloWorld

大功告成最后一步,验证前面的成果的时刻到了:

java HelloWorld

如果你这步发生问题,如果这步你收到java.lang.UnsatisfiedLinkError异常,可以通过如下方式指明共享库的路径:

java -Djava.library.path=’.’ HelloWorld

当然还有其他的方式可以指明路径请参考《在Linux平台下使用JNI》。

我们可以看到久违的“Hello world!”输出了。

Java怎么调用pyd文件

在做项目的时候,有的时候由于合作人员之间所会的编程语言的不同,会导致项目合作中的一些问题,很多时候需要不同语言之间的调用,这次就分享一下java调用python代码的东西。

一、python代码运行

巧妇难为无米之炊。首先,要确保python环境配置完好,并且相应的python代码可以运行。这个就不在这里进行讲述了,如果有需要可以查看我之前的一些文章。

二、java调用python代码

1、查阅了一些网上资料,看到了很多介绍使用jython调用python代码的例子,不过由于一些原因我没有尝试这个方法,而是直接测试了Runtime.getRuntime().exec(args)这个java库中自带的方法,下面直接切入主题。

2、先直接上代码:

python代码(helloword.py):

# coding:utf-8import numpy as np

if __name__ == ‘__main__’:

a = np.ones(3)

print(a)    print ‘恭喜您!java调用python代码成功’

java代码(MyDemo.java):

import java.io.BufferedReader;import java.io.InputStreamReader;public class MyDemo {    public static void main(String[] args) {        try {

System.out.println(“start”);

String[] args1=new String[]{“/home/huan/anaconda2/bin/python”,”/home/huan/myfile/pythonfile/helloword.py”};

Process pr=Runtime.getRuntime().exec(args1);

BufferedReader in = new BufferedReader(new InputStreamReader(

pr.getInputStream()));

String line;            while ((line = in.readLine()) != null) {

System.out.println(line);

}

in.close();

pr.waitFor();

System.out.println(“end”);

} catch (Exception e) {

e.printStackTrace();

}

}

}

执行结果:

需要注意的是此行代码:

String[] args1=new String[]{“/home/huan/anaconda2/bin/python”,”/home/huan/myfile/pythonfile/helloword.py”};

这句代码是很重要的,首先一定要设置好你所使用的python的位置,切记不要直接使用python,因为系统会默认使用自带的python,所以一定要设置好你所使用的python的位置,否则可能会出现意想不到的问题(比如说我使用的是anaconda中的python,而ubuntu系统会默认调用自带的python,而我自带的python中并没有numpy库,所以会造成相应的代码不会执行的问题,所以设置好python的位置是很重要的)。还有就是要设置好py文件的位置,使用绝对路径。

还有就是可以看出,此方法可以满足我们python代码中调用第三方库的情况,简单实用。

三、java中向python代码动态传参

python代码(helloword.py):

# coding:utf-8import numpy as npimport sys

if __name__ == ‘__main__’:

a = np.ones(3)

print(a)    print ‘恭喜您!java调用python代码成功’

print ‘脚本名为:%s’%(sys.argv[0])    print ‘传入的参数为:’

for i in range(1, len(sys.argv)):print ‘参数:%s’%(sys.argv[i])

java代码(MyDemo.java):

import java.io.BufferedReader;import java.io.InputStreamReader;public class MyDemo {    public static void main(String[] args) {        try {

System.out.println(“start”);

String para1=”time”;

String para2=”sfdjk”;

String[] args1 = new String[]{“/home/huan/anaconda2/bin/python”, “/home/huan/myfile/pythonfile/helloword.py”,para1,para2};

Process pr = Runtime.getRuntime().exec(args1);

BufferedReader in = new BufferedReader(new InputStreamReader(

pr.getInputStream()));

String line;            while ((line = in.readLine()) != null) {

System.out.println(line);

}

in.close();

pr.waitFor();

System.out.println(“end”);

} catch (Exception e) {

e.printStackTrace();

}

}

}

代码运行结果为:

好了,多余的话就不说了,一切尽在代码中。此处的分享就到这里了。

java 怎么在程序里取 excel里悬浮框的值,随便什么方式 poi ,jxl都可以。

java 怎么在程序里取 excel里悬浮框的值,随便什么方式 poi ,jxl都可以

用的是poi

package com;

import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;

import org.apache.poi.hssf.usermodel.HSSFFont;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class CreateXL {

/**

* 制定EXCEL要存放的文件位置,假定在D盘的test目录下

*/

public static String outputFile=”C:/Users/chentx/Desktop/test.xls”;

public static void main(String[] args) {

try {

//创建新的Excel工作薄

HSSFWorkbook workbook = new HSSFWorkbook();

//在Excel中建一个工作表,其名为默认值

//如果建造一张为”ucap字段”的工作表,那么语句就是HSSFSheet sheet =workbook.createSheet(“ucap字段”);

HSSFSheet sheet =workbook.createSheet();

//在索引0的位置创建行(最顶端的行)

HSSFRow row = sheet.createRow(0);

//在索引0的位置创建单元格(左上端)

HSSFCell cell = row.createCell(0);

//定义单元格为字符串类型

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

//在单元格中输入一些内容

cell.setCellValue(“field1”);

//begin,设置单元格格式———————————–

HSSFFont font = workbook.createFont();

font.setColor(HSSFFont.COLOR_RED);//设置红色

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//设置粗体

//创建格式

HSSFCellStyle cellStyle = workbook.createCellStyle();

cellStyle.setFont(font);

//应用格式

cell.setCellStyle(cellStyle); //设置格式

cell.setCellType(HSSFCell.CELL_TYPE_STRING);//定义单元格为字符串类型

cell.setCellValue(“陈天翔霸气”);//设置文本内容

//end,————————————————

//输出文件流

FileOutputStream fOut = new FileOutputStream(outputFile);

//把相应的excel工作表保存到硬盘上

workbook.write(fOut);

fOut.flush();

fOut.close();//关闭文件,操作结束

System.out.println(“文件生成完毕….”);

} catch (Exception e) {

System.out.println(“已运行出错” + e);

}

}

}

/*******************************************************************************************************/

package com;

import java.io.FileInputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ReadXL {

public static String fileToBeRead=”C:/Users/chentx/Desktop/test.xls”;

public static void main(String[] args) {

try {

//创建对excel工作表文件的引用

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));

/* 创建对工作表的引用,本例按名引用(工作簿名Sheet0)

* HSSFSheet sheet = workbook.getSheet(“Sheet0”);

* 或者按索引引用

* HssfSheet sheet = workbook.getSheetAt(0);

*/

HSSFSheet sheet = workbook.getSheetAt(0);

//读取左上端单元

HSSFRow row = sheet.getRow(0);

HSSFCell cell = row.getCell(0);

//拿到读出的内容

String mes = cell.getStringCellValue();

System.out.println(“拿到的信息:” + mes);

} catch (Exception e) {

e.printStackTrace();

}

}

}

java application运行出现框框

jfreechart新版的会出这问题的。。。。你换个低版本的可以试试。。

我以前出过这问题。。 换个jar就可以了。。

java如何调用exe文件?

public class transferExe {\x0d\x0a public static void main(String[] args) {\x0d\x0a openWinExe();\x0d\x0a openExe();\x0d\x0a }\x0d\x0a //用 Java 调用windows系统的exe文件,比如notepad,calc之类\x0d\x0a public static void openWinExe() {\x0d\x0a Runtime rn = Runtime.getRuntime();\x0d\x0a Process p = null;\x0d\x0a try {\x0d\x0a String command = “notepad”;\x0d\x0a p = rn.exec(command);\x0d\x0a } catch (Exception e) {\x0d\x0a System.out.println(“Error win exec!”);\x0d\x0a }\x0d\x0a }\x0d\x0a //调用其他的可执行文件,例如:自己制作的exe,或是 下载 安装的软件.\x0d\x0a public static void openExe() {\x0d\x0a Runtime rn = Runtime.getRuntime();\x0d\x0a Process p = null;\x0d\x0a try {\x0d\x0a p = rn.exec(“\”D:/QQ2010.exe\””);\x0d\x0a } catch (Exception e) {\x0d\x0a System.out.println(“Error exec!”);\x0d\x0a }\x0d\x0a }\x0d\x0a }

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月27日 09:33:46
下一篇 2024年3月27日 09:42:10

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4600
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4400
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3600
  • linux给文件写权限,linux怎么给文件权限

    linux宝塔写入权限不足 1、可以使用chmod命令修改权限。语法:chmod [-cfvR] [–help] [–version] mode file…说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。 2、通过更改文件权限可以使用c…

    2024年5月23日
    5200
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4800
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4400
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    5000
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4300
  • java技术规范,java规范性要求

    现在主流的JAVA技术是什么? java最流行开发技术程序员必看 1 、Git Git一直是世界上最受欢迎的Java工具之一,也是Java开发人员最杰出的工具之一。Git是一个开源工具,是-种出色的分布式版本控制解决方案。 (1).Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。(2).Java面向对象编…

    2024年5月23日
    4100
  • c语言多文件调用,c语言多文件操作

    c语言一个结构体如何在多个源文件里面调用? 在这种方法中,可以先将多个源文件分别编译成目标文件,然后再将它们链接成一个可执行文件。 在头文件里定义结构,例如:typedef struct { int a, b;} S;S s_instance;在其他文件里引用就可以。 创建程序入口点main函数,在main函数中条用其它函数。达到同时运行的母的。如果不这样,…

    2024年5月23日
    4400

发表回复

登录后才能评论



关注微信