如何从Java 5和Java 6中的任意字符串(在内存中)编译java代码,加载它并在其上运行特定方法(预定义)?
在你点燃之前,我查看了现有的实现:
我确信之前已经解决了这个问题,但我找不到任何看起来甚至是谷歌半生产质量的东西(除了jci,正如我之前所说,我还没有设法使用).
编辑:
Edit2:现在,我对BeanShell"评估"感到满意.显然它完成了我需要的所有东西(获取一个字符串,在'当前'类路径的上下文中评估它.它确实错过了一些Java 5特性,但它可以使用枚举(不定义)和编译'泛型'(擦除) )类,所以它应该足够我想要的.
我不想将答案标记为已接受,因为我希望有更好的解决方案出现.
Edit3:接受了beanshell建议 - 它真的很棒.
java compiler-construction runtime compilation runtime-compilation
我将为拥有WinXP机器的客户端编写一个小型桌面应用程序,他们不会安装.NET框架(至少不适合我).
所以我的选择仅限于C++或VB6,两者都不是很好.我记得当时Mono想出了一个静态编译器,但最近我唯一能找到的就是Miguel de Icaza为了在iPhone上运行应用程序而在游戏引擎上进行静态编译 - 不是我的考虑到了.
有没有任何产品,免费或商业,允许我静态编译我的.net 3.5 winform应用程序?
谢谢
我在xcode中构建了几个C++文件,需要大量内存才能编译(+ 1 GB /文件).因为我在双核笔记本电脑上执行此操作,xcode使用2个线程进行构建.这两个线程最终将构建同时占用大量内存的文件,因此系统遭受内存不足,编译即将停止.
对我来说一个充分的解决方案是强制Xcode只使用一个构建线程.有没有人知道改变Xcode使用的构建线程数的方法?
对于那些感兴趣的人,C++文件包含一个相当大的boost :: spirit :: qi解析器.
我目前正在忙于一个项目,我需要使用外部附件来阅读Mifare 1k标签.
附件提供了一个SDK,用(Objective?)C++编写,我按照提供的指令将XCode设置为"Compile sources as:Objective-C++",并在"Other linkers flags"中添加"-Obj-C++".
SDK编译好了,但麻烦的是我已经在项目中使用了几个库(例如ASIHTTPRequest,JSONKit,...),并且因为这些库中的那些新设置而导致编译问题.如果我切换回以前的设置,我会在阅读器的SDK中遇到编译问题
问题是:有没有办法只从SDK中编译类作为C++,而项目的其余部分作为objective-c?
编辑: SDK文件仅包含.h(和链接库)
谢谢你的帮助,迈克
xcode compilation objective-c conditional-compilation objective-c++
我正在玩Google Go,我很开心(!),但是我遇到了包子系统的一些问题.
我在Mac OS X Lion上运行Go 1.0.1.我还构建了各种单个文件程序而没有问题(我还使用html/templates构建一个小的webapp而没有任何问题,它编译并运行没有任何错误).
我已经定义了一个"可重用"的包(even.go):
package even
func Even(i int) bool {
return i % 2 == 0
}
func Odd(i int) bool {
return i % 2 == 1
}
Run Code Online (Sandbox Code Playgroud)
和消费者计划(useeven.go):
package main
import (
"./even"
"fmt"
)
func main() {
a := 5
b := 6
fmt.Printf("%d is even %v?\n", a, even.Even(a))
fmt.Printf("%d is odd %v?\n", b, even.Odd(b))
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用编译"库"时
go build even.go
Run Code Online (Sandbox Code Playgroud)
我什么都没有......没有错误,没有消息......会发生什么?
我该怎么做?
我最近发布了一个关于由于C++中的虚拟性导致的内存开销的问题.答案让我了解vtable和vptr的工作原理.我的问题如下:我在超级计算机上工作,我有数十亿个对象,因此我不得不关心由于虚拟性造成的内存开销.经过一些测量,当我使用具有虚函数的类时,每个派生对象都有其8字节的vptr.这根本不可忽视.
我想知道intel icpc或g ++是否有一些配置/选项/参数,使用"全局"vtable和可调精度的索引而不是vptr.因为这样的事情将允许我使用2字节索引(unsigned short int)而不是8字节vptr用于数十亿个对象(并且很好地减少了内存开销).有没有办法用编译选项做到这一点(或类似的东西)?
非常感谢你.
为什么用Java编写的代码需要用JVM解释的字节代码编译,但是用JavaScript这样的语言编写的代码不需要编译,可以直接在浏览器中运行?
有没有一种简单的方法来理解这个?
这两种语言的编写方式之间的根本区别是什么,这可能有助于理解这种行为?
我不是CS学生,所以请原谅这个问题的天真.
我使用Python的几个版本我的电脑上:2.6.6,2.7.6和2.7.9.当我用boost-python编译Boost时,我必须让Python在参数中使用.如果我想要兼容性,我是否要为每个Python版本编译Boost?(这是非常巨大的!)或者有没有办法只使用一个Boost版本和几个python版本?
我使用node-sass将我的所有Sass文件编译为master.css.这很好但现在我想添加前缀.我想只使用npm,没有Gulp或Grunt.
这是我的package.json文件:
{
"name": "xxxxxx.com",
"version": "1.0.0",
"description": "",
"watches": {
"sass": "src/scss/**"
},
"scripts": {
"sass": "node-sass src/scss/master.scss -o dist/css/ --style compressed",
"prefix": "postcss --use autoprefixer dist/css/master.css -d dist/css/master.css",
"dev": "rerun-script"
},
"author": "Jan",
"license": "ISC",
"devDependencies": {
"autoprefixer": "^6.3.1",
"browserify": "^13.0.0",
"clean-css": "^3.4.9",
"node-sass": "^3.4.2",
"postcss-cli": "^2.5.0",
"rerun-script": "^0.6.0",
"uglifyjs": "^2.4.10"
}
}
Run Code Online (Sandbox Code Playgroud)
我不能让它运行.我使用autoprefixer和postcss-cli.这些模块已在本地安装在项目目录中.我认为我的"剧本"部分是错误的.那看起来怎么样?
我正在尝试从源代码编译一个新的PHP(5.4.0)实例,并希望保持与已经从发行版Ubuntu-11.10安装的那个(PHP 5.3.6-13ubuntu3.6)的兼容性.也就是说,我想./configure使用与安装的PHP相同的指令运行.
我总能看到./configure输出的命令,phpinfo()但这一次,令我惊讶的是,没有提供.
你知道任何阻止phpinfo输出编译配置的标志吗?要么,
你知道如何编译PHP的其他方法吗?