因此,我有一个.class文件及其绝对路径,我需要知道如何.class从 Java 内部执行该文件。Class如果我也能从中得到一样东西就好了。
我知道loadClass中的方法ClassLoader,但它需要文件的“二进制名称”。我不确定是否可以获得外部.class文件的二进制名称,但如果可以的话,那会很有用!但是,如果没有,是否有其他方法来执行或获取外部文件的实例.class?
/*For those of us who work better with examples..
Let's say I have a .class file located at C:/Users/USER/Desktop. So..*/
String absolutePath = "C:/Users/USER/Desktop/FILE.class";
/*Now, having that, how would I get an instance of that class, or,
at least, execute it?*/
Run Code Online (Sandbox Code Playgroud) 我有一个表(名为 VGI_table),其中包含一个列(名为 match_tabl),其中包含同一数据库中其他表的名称以及这些表的 object_ids。我正在尝试创建一个 plpgsql 函数,该函数遍历 VGI_table 中的每一行并执行查询以从另一个表中检索对象,如下所示。
该函数有 4 个参数(都是 varchar),前两个是 VGI_table 中的列名,第三个是 VGI_table 的名称,最后一个参数是输出。
vgi_match_id_col, vgi_match_table_col, vgi_table, output_table
Run Code Online (Sandbox Code Playgroud)
该函数的代码如下所示,ro 用于保存第一个表查询,match_row 保存查询的外部表的输出。距离是使用 PostGIS st_distance 函数创建的输出。
DECLARE
ro record;
match_row record;
distance float;
BEGIN
for ro in EXECUTE 'select gid, geom, '||vgi_match_id_col||' as match_id, '||vgi_match_table_col||' as match_table from '||vgi_table
LOOP
--raise notice '(%)', 'select geom from public.'||ro.match_table||' where gid = '||ro.match_id;
execute 'select geom from public.'||ro.match_table||' where gid = '||ro.match_id into match_row;
distance := st_distance(ro.geom, st_transform(match_row.geom,st_srid(ro.geom)));
EXECUTE 'INSERT INTO '||output_table||' …Run Code Online (Sandbox Code Playgroud) 我有一个 elf 文件,我想知道是否可以获得一些有关可执行文件中使用变量(字符串)的信息。
如果我打印出 .elf 的字符串,我会发现一个有趣的字符串,我想知道它在哪个函数中使用,这是否可能?
谢谢你!
我可以在 Oracle 中进行这样的编码,使用“执行立即 'sql 查询..' ”命令动态创建表。
create or replace function make_a_table1(p_table_name varchar2, p_column_name varchar2, p_data_type varchar2) return varchar2 is
var varchar2(150);
sydt varchar2(30);
pragma autonomous_transaction;
begin
select to_char(sysdate,'HH24_MI_SS') into sydt from dual;
dbms_output.put_line(sydt);
var :='create table '||p_table_name||'_'||sydt||' ( '||p_column_name||' '||p_data_type||')';
dbms_output.put_line(var);
execute immediate var;
commit;
return 'Table Created Successfully';
end;
Run Code Online (Sandbox Code Playgroud)
是否有可能在 BigQuery 函数中实现这一目标?
我有一个我构建的应用程序,它使用通过ProcessBuilder调用的非Java可执行文件:
ProcessBuilder pb = new ProcessBuilder(invocation);
pb.redirectErrorStream(true);
Process proc = pb.start();
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
但是,我想将该应用程序整齐地捆绑到jar文件本身,而不是要求将它放在同一目录之外.有没有办法运行这个应用程序而不提取它?
如果我需要删除ProcessBuilder,那就没关系,只要它能正常工作.:)
c.execute("UPDATE Players SET %s = %d WHERE nick=%s",
(parts[1], int(parts[2]), parts[0]))
Run Code Online (Sandbox Code Playgroud)
给了我错误
TypeError: %d format: a number is required, not str
Run Code Online (Sandbox Code Playgroud)
我知道execute应该只采取%s,但parts[2]应该转换为int,因为它将是一个int(作为字符串输入).
所以,如果我只放了%s,当然它会出现这个错误:
mysql_exceptions.ProgrammingError: (1064,
"You have an error in your SQL syntax; "
"check the manual that corresponds to your MySQL server version "
"for the right syntax to use near "
"''wins' = '450' WHERE nick='xan'' at line 1")
Run Code Online (Sandbox Code Playgroud)
因为wins是整数.这是什么解决方案?
在SQL Server 2008(TSQL)中,我创建了一个这样的存储过程:
CREATE PROCEDURE SP_1_10_2
AS
declare @mostValuableBook nvarchar(255)
SELECT @mostValuableBook = Name
FROM books
WHERE price =
( SELECT MAX(price)
FROM books
WHERE izd LIKE '%BHV%' );
return @mostValuableBook
GO
Run Code Online (Sandbox Code Playgroud)
但是,当我试图执行它时:
declare @x nvarchar(255)
EXECUTE @x = SP_1_10_2;
SELECT 'The most expensive BHV book:', @x AS 'Name'
GO
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
将nvarchar值'Internet Explorer 3 original'转换为数据类型int时转换失败.
似乎问题就在于此
EXECUTE @x = SP_1_10_2;
Run Code Online (Sandbox Code Playgroud)
你能告诉我什么是错的吗?为什么要尝试转换为int?
我有下表
create table LIST_PIPE_TABLE
(
ID INT,
ITEM VARCHAR(4000),
IS_FOLDER VARCHAR(10)
)
Run Code Online (Sandbox Code Playgroud)
有3行数据
insert into LIST_PIPE_TABLE values(1,'Victorias Secret','true')
insert into LIST_PIPE_TABLE values(2,'Porsche','true')
insert into LIST_PIPE_TABLE values(3,'Babbolat','false')
Run Code Online (Sandbox Code Playgroud)
还有一个应该返回结果集的存储过程
CREATE or alter PROCEDURE LIST_PIPE
RETURNS
( col1 varchar(4000),
col2 varchar(10)
)
AS
begin
FOR SELECT ITEM AS ITEM
,IS_FOLDER AS IS_FOLDER
FROM LIST_PIPE_TABLE
into :col1, :col2
do begin
suspend;
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下语句执行它时
execute procedure LIST_PIPE
Run Code Online (Sandbox Code Playgroud)
返回唯一的一行
COL1 COL2
Victorias Secret true
Run Code Online (Sandbox Code Playgroud)
请告知它有什么问题.我应该如何执行它以查看它旨在返回的所有3行?
有没有办法将处理器指令放入数组,使其内存段可执行并将其作为一个简单的函数运行:
int main()
{
char myarr[13] = {0x90, 0xc3};
(void (*)()) myfunc = (void (*)()) myarr;
myfunc();
return 0;
}
Run Code Online (Sandbox Code Playgroud)