导航:首页 > 源码编译 > 动态编译文件类型

动态编译文件类型

发布时间:2022-02-08 04:22:17

❶ 怎么动态编译java源文件

(Write once, run anywhere)” 的目标。Java类文件中包含的字节代码可以被不同平台上的JVM所使用。Java字节代码不仅可以以文件形式存在于磁盘上,也可以通过网络方式来下载,还可以只存在于内存中。JVM中的类加载器会负责从包含字节代码的字节数组(byte[])中定义出Java类。在某些情况下,可能会需要动态的生成 Java字节代码,或是对已有的Java字节代码进行修改。这个时候就需要用到本文中将要介绍的相关技术。首先介绍一下如何动态编译Java源文件。
动态编译Java源文件
在一般情况下,开发人员都是在程序运行之前就编写完成了全部的Java源代码并且成功编译。对有些应用来说,Java源代码的内容在运行时刻才能确定。这个时候就需要动态编译源代码来生成Java字节代码,再由JVM来加载执行。典型的场景是很多算法竞赛的在线评测系统(如PKU JudgeOnline),允许用户上传Java代码,由系统在后台编译、运行并进行判定。在动态编译Java源文件时,使用的做法是直接在程序中调用Java编译器。
JSR 199引入了Java编译器API。如果使用JDK 6的话,可以通过此API来动态编译Java代码。比如下面的代码用来动态编译最简单的Hello World类。该Java类的代码是保存在一个字符串中的。
publicclassCompilerTest{
publicstaticvoidmain(String[]args)throwsException{
Stringsource="publicclassMain{publicstaticvoidmain(String[]args){System.out.println(\"HelloWorld!\");}}";
JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
=compiler.getStandardFileManager(null,null,null);
=newCompilerTest.StringSourceJavaObject("Main",source);
Iterable<extendsJavaFileObject>fileObjects=Arrays.asList(sourceObject);
CompilationTasktask=compiler.getTask(null,fileManager,null,null,null,fileObjects);
booleanresult=task.call();
if(result){

❷ 动态编译和静态编译有何主要区别

静态编译与动态编译的区别
1、动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。
2、静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。

❸ 什么是动态编译

动态编译是指根据不同情况编译不同的文件,控制编译过程,比如makefile的写法等。

linux动态编译的文件怎么在arm中执行

先找一下有无arm-linux-gcc这个文件: find / -xdev -name arm-linux-gcc 再看一下有无执行权限: ls -l arm-linux-gcc 再用绝对路径执行一下看看: /path/to/arm-linux-gcc -v

❺ 在易语言里,什么叫做静态编译,什么叫做动态编译那可以生成安装包的是什么编译具体见补充

静态编译生成的文件可以共享给大家用
动态编译生成的文件只能共享给安装有易语言的人使用
这样回答够简单了

❻ 在java代码中实现动态编译java文件

importjavax.tools.*;
importjava.io.*;
/**
*@authorhardneedl
*/
finalpublicclassMyCompile{

/**
*@paramargs命令行参数只有1个,即待编译的源代码文件的绝对路径
*@throwsFileNotFoundException
*/
publicstaticvoidmain(String...args)throwsFileNotFoundException{

JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
intr=compiler.run(null,null,null,args[0]);
System.out.println(r==0?"成功":"失败");
}

}

❼ 有什么编译型语言是动态类型的吗

动态是用new动态申请内存的~~new出来的内存需要手动释放~~比如说
int a=new int(10)~也就是用delete来释放~~另外~动态分配的内存是在堆上面的~~~内存有~堆 栈 和常量存储区~

静态是一般的类型~~比如说int a=10;内存分配在栈上~~

另外栈内存上的数据是有顺序的~~先进后出~~而在堆内存上是无序的~~所以需要指针来操作~~万一指针丢了~~或者忘记释放内存~是很麻烦的~~

但是堆上面的空间比较大~~一般32位机器上~应该~栈是16K~~堆是4M~~我可能记的不是很清楚了~~~具体你可以察一下~

❽ 静态编译和动态编译有何不同

静态编译就是把库函数编译到你的程序里 这样编译的好处是 可以适应不同的平台 如果你是用window系统的话不建议用静态编译 因为这样会使你的代码量增大
动态编译就是不把库函数编译到你的程序里

❾ 有什么动态编译java源代码的框架

可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的:

  1. 将你这段字符串输出到一个文件里,用Java类文件的方式命名。

  2. 2.调用外部javac命令将该文件编译。

  3. 3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。

  4. 上面的每一步都能在中找到实现方法,自己发挥吧。

❿ java编译动态生成的类提示缺少包.类

这种情况,在A中,不可能import引用B相关的,要全部使用反射调用B类的属性或方法。

阅读全文

与动态编译文件类型相关的资料

热点内容
sql服务停用命令 浏览:912
为什么系统要用两个云服务器 浏览:680
两个pdf怎么合并 浏览:293
php查询为空 浏览:589
香港服务器丢包了怎么办 浏览:46
linux系统管理教程 浏览:643
共享文件夹怎么设置只读文件 浏览:295
小米添加云服务器地址 浏览:581
qt入门pdf 浏览:670
视频监控取消默认加密 浏览:294
云服务器怎么设置输入键盘 浏览:817
单片机支持多大mhz 浏览:42
linux启动mysql命令 浏览:792
编程和游戏买什么笔记本 浏览:902
程序员座位图片大全 浏览:142
aix重启命令 浏览:462
腾讯云服务器的后台 浏览:47
安卓怎么定时打开软件 浏览:598
笨手机应用加密怎么删除 浏览:98
为什么vc6编译是灰色 浏览:390