@ -35,26 +35,23 @@
|
||||
|
||||
#include "JavaChecker.h"
|
||||
|
||||
#include <QFile>
|
||||
#include <QProcess>
|
||||
#include <QMap>
|
||||
#include <QDebug>
|
||||
#include <QFile>
|
||||
#include <QMap>
|
||||
#include <QProcess>
|
||||
|
||||
#include "JavaUtils.h"
|
||||
#include "FileSystem.h"
|
||||
#include "Commandline.h"
|
||||
#include "Application.h"
|
||||
#include "Commandline.h"
|
||||
#include "FileSystem.h"
|
||||
#include "JavaUtils.h"
|
||||
|
||||
JavaChecker::JavaChecker(QObject *parent) : QObject(parent)
|
||||
{
|
||||
}
|
||||
JavaChecker::JavaChecker(QObject* parent) : QObject(parent) {}
|
||||
|
||||
void JavaChecker::performCheck()
|
||||
{
|
||||
QString checkerJar = JavaUtils::getJavaCheckPath();
|
||||
|
||||
if (checkerJar.isEmpty())
|
||||
{
|
||||
if (checkerJar.isEmpty()) {
|
||||
qDebug() << "Java checker library could not be found. Please check your installation.";
|
||||
return;
|
||||
}
|
||||
@ -62,25 +59,21 @@ void JavaChecker::performCheck()
|
||||
QStringList args;
|
||||
|
||||
process.reset(new QProcess());
|
||||
if(m_args.size())
|
||||
{
|
||||
if (m_args.size()) {
|
||||
auto extraArgs = Commandline::splitArgs(m_args);
|
||||
args.append(extraArgs);
|
||||
}
|
||||
if(m_minMem != 0)
|
||||
{
|
||||
if (m_minMem != 0) {
|
||||
args << QString("-Xms%1m").arg(m_minMem);
|
||||
}
|
||||
if(m_maxMem != 0)
|
||||
{
|
||||
if (m_maxMem != 0) {
|
||||
args << QString("-Xmx%1m").arg(m_maxMem);
|
||||
}
|
||||
if(m_permGen != 64)
|
||||
{
|
||||
if (m_permGen != 64) {
|
||||
args << QString("-XX:PermSize=%1m").arg(m_permGen);
|
||||
}
|
||||
|
||||
args.append({"-jar", checkerJar});
|
||||
args.append({ "-jar", checkerJar });
|
||||
process->setArguments(args);
|
||||
process->setProgram(m_path);
|
||||
process->setProcessChannelMode(QProcess::SeparateChannels);
|
||||
@ -130,8 +123,7 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status)
|
||||
qWarning() << "STDERR" << m_stderr;
|
||||
qDebug() << "Java checker finished with status" << status << "exit code" << exitcode;
|
||||
|
||||
if (status == QProcess::CrashExit || exitcode == 1)
|
||||
{
|
||||
if (status == QProcess::CrashExit || exitcode == 1) {
|
||||
result.validity = JavaCheckResult::Validity::Errored;
|
||||
emit checkFinished(result);
|
||||
return;
|
||||
@ -146,8 +138,7 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status)
|
||||
#else
|
||||
QStringList lines = m_stdout.split("\n", QString::SkipEmptyParts);
|
||||
#endif
|
||||
for(QString line : lines)
|
||||
{
|
||||
for (QString line : lines) {
|
||||
line = line.trimmed();
|
||||
// NOTE: workaround for GH-4125, where garbage is getting printed into stdout on bedrock linux
|
||||
if (line.contains("/bedrock/strata")) {
|
||||
@ -159,18 +150,14 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status)
|
||||
#else
|
||||
auto parts = line.split('=', QString::SkipEmptyParts);
|
||||
#endif
|
||||
if(parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty())
|
||||
{
|
||||
if (parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
results.insert(parts[0], parts[1]);
|
||||
}
|
||||
}
|
||||
|
||||
if(!results.contains("os.arch") || !results.contains("java.version") || !results.contains("java.vendor") || !success)
|
||||
{
|
||||
if (!results.contains("os.arch") || !results.contains("java.version") || !results.contains("java.vendor") || !success) {
|
||||
result.validity = JavaCheckResult::Validity::ReturnedInvalidData;
|
||||
emit checkFinished(result);
|
||||
return;
|
||||
@ -181,7 +168,6 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status)
|
||||
auto java_vendor = results["java.vendor"];
|
||||
bool is_64 = os_arch == "x86_64" || os_arch == "amd64" || os_arch == "aarch64" || os_arch == "arm64";
|
||||
|
||||
|
||||
result.validity = JavaCheckResult::Validity::Valid;
|
||||
result.is_64bit = is_64;
|
||||
result.mojangPlatform = is_64 ? "64" : "32";
|
||||
@ -194,8 +180,7 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status)
|
||||
|
||||
void JavaChecker::error(QProcess::ProcessError err)
|
||||
{
|
||||
if(err == QProcess::FailedToStart)
|
||||
{
|
||||
if (err == QProcess::FailedToStart) {
|
||||
qDebug() << "Java checker has failed to start.";
|
||||
qDebug() << "Process environment:";
|
||||
qDebug() << process->environment();
|
||||
@ -216,8 +201,7 @@ void JavaChecker::error(QProcess::ProcessError err)
|
||||
void JavaChecker::timeout()
|
||||
{
|
||||
// NO MERCY. NO ABUSE.
|
||||
if(process)
|
||||
{
|
||||
if (process) {
|
||||
qDebug() << "Java checker has been killed by timeout.";
|
||||
process->kill();
|
||||
}
|
||||
|
Reference in New Issue
Block a user