运行.jar时缺少JavaFX运行时组件

时间:2019-01-23 03:57:56

标签: java intellij-idea javafx

我正在尝试使用包含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

在此项目中,我没有使用JavaFXgradle之类的构建系统,而是从Intellij下载maven文件并将其作为库包含在内。

Screenshot of my project structure

0 个答案:

没有答案