我正在尝试使用包含JavaFX的Intellij构建独立的.jar,但是尝试运行它时出现以下错误。
knex_insert_ignore(knex, 'rates', allRates);
// insert into `metric_names` (`a`, `b`, `c`, `d`) values (1, 2, DEFAULT, DEFAULT), (DEFAULT, DEFAULT, 3, 4)
// INSERT IGNORE `metric_names` (`a`, `b`, `c`, `d`) values (1, 2, DEFAULT, DEFAULT), (DEFAULT, DEFAULT, 3, 4)
function knex_insert_ignore(knex, table, rows)
{
if (rows.length == 0) {
return Promise.resolve();
}
const keys = rows_keys(rows);
const inserts = [];
const bindings = [table, ...keys];
for (let i = 0, end = rows.length; i < end; ++i) {
const row = rows[i];
const insert = [];
for (let j = 0, jj = keys.length; j < jj; ++j) {
const key = keys[j];
if (row[key] === undefined) {
insert.push('DEFAULT');
}
else {
insert.push('?');
bindings.push(row[key]);
}
}
inserts.push(`(${insert})`);
}
return knex.raw(`INSERT IGNORE INTO ?? (${keys.slice().fill('??')}) VALUES ${inserts}`, bindings);
}
// Return all keys mentioned in rows
function rows_keys(rows)
{
const unique = {};
for (let i = 0, end = rows.length; i < end; ++i) {
const keys = Object.keys(rows[i]);
for (let j = 0, jj = keys.length; j < jj; ++j) {
unique[keys[j]] = true;
}
}
return Object.keys(unique);
}
我已遵循问题Trying to run executable jar of JavaFX app - Error: JavaFX runtime components are missing 的建议,我可以成功运行jar。但是我希望能够运行它,而无需尽可能指定VM参数(因此它可以在另一台PC上运行)。
所以我的问题是是否可以在Error: JavaFX runtime components are missing, and are required to run this application
文件中包含JavaFX
类,以便我可以在安装了Java的任何地方运行此应用程序?还是我需要安装.jar
,然后编写脚本以使用指向JavaFX
的正确VM参数运行.jar
?
在此项目中,我没有使用JavaFX
或gradle
之类的构建系统,而是从Intellij下载maven
文件并将其作为库包含在内。