aboutsummaryrefslogtreecommitdiff
path: root/launcher/java
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/java')
-rw-r--r--launcher/java/JavaInstallList.cpp10
-rw-r--r--launcher/java/JavaInstallList.h6
-rw-r--r--launcher/java/JavaUtils.cpp25
3 files changed, 25 insertions, 16 deletions
diff --git a/launcher/java/JavaInstallList.cpp b/launcher/java/JavaInstallList.cpp
index d2bfde05..e2f0aa00 100644
--- a/launcher/java/JavaInstallList.cpp
+++ b/launcher/java/JavaInstallList.cpp
@@ -72,7 +72,7 @@ void JavaInstallList::load()
}
}
-const BaseVersionPtr JavaInstallList::at(int i) const
+const BaseVersion::Ptr JavaInstallList::at(int i) const
{
return m_vlist.at(i);
}
@@ -121,7 +121,7 @@ BaseVersionList::RoleList JavaInstallList::providesRoles() const
}
-void JavaInstallList::updateListData(QList<BaseVersionPtr> versions)
+void JavaInstallList::updateListData(QList<BaseVersion::Ptr> versions)
{
beginResetModel();
m_vlist = versions;
@@ -136,7 +136,7 @@ void JavaInstallList::updateListData(QList<BaseVersionPtr> versions)
m_loadTask.reset();
}
-bool sortJavas(BaseVersionPtr left, BaseVersionPtr right)
+bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right)
{
auto rleft = std::dynamic_pointer_cast<JavaInstall>(right);
auto rright = std::dynamic_pointer_cast<JavaInstall>(left);
@@ -209,11 +209,11 @@ void JavaListLoadTask::javaCheckerFinished()
}
}
- QList<BaseVersionPtr> javas_bvp;
+ QList<BaseVersion::Ptr> javas_bvp;
for (auto java : candidates)
{
//qDebug() << java->id << java->arch << " at " << java->path;
- BaseVersionPtr bp_java = std::dynamic_pointer_cast<BaseVersion>(java);
+ BaseVersion::Ptr bp_java = std::dynamic_pointer_cast<BaseVersion>(java);
if (bp_java)
{
diff --git a/launcher/java/JavaInstallList.h b/launcher/java/JavaInstallList.h
index 3c237edf..733dc7e1 100644
--- a/launcher/java/JavaInstallList.h
+++ b/launcher/java/JavaInstallList.h
@@ -42,7 +42,7 @@ public:
Task::Ptr getLoadTask() override;
bool isLoaded() override;
- const BaseVersionPtr at(int i) const override;
+ const BaseVersion::Ptr at(int i) const override;
int count() const override;
void sortVersions() override;
@@ -50,7 +50,7 @@ public:
RoleList providesRoles() const override;
public slots:
- void updateListData(QList<BaseVersionPtr> versions) override;
+ void updateListData(QList<BaseVersion::Ptr> versions) override;
protected:
void load();
@@ -59,7 +59,7 @@ protected:
protected:
Status m_status = Status::NotDone;
shared_qobject_ptr<JavaListLoadTask> m_loadTask;
- QList<BaseVersionPtr> m_vlist;
+ QList<BaseVersion::Ptr> m_vlist;
};
class JavaListLoadTask : public Task
diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp
index 6c0c60cd..5efbc7a8 100644
--- a/launcher/java/JavaUtils.cpp
+++ b/launcher/java/JavaUtils.cpp
@@ -439,19 +439,28 @@ QList<QString> JavaUtils::FindJavaPaths()
javas.append(FS::PathCombine(prefix, "bin/java"));
}
};
+ // java installed in a snap is installed in the standard directory, but underneath $SNAP
+ auto snap = qEnvironmentVariable("SNAP");
+ auto scanJavaDirs = [&](const QString & dirPath)
+ {
+ scanJavaDir(dirPath);
+ if (!snap.isNull()) {
+ scanJavaDir(snap + dirPath);
+ }
+ };
// oracle RPMs
- scanJavaDir("/usr/java");
+ scanJavaDirs("/usr/java");
// general locations used by distro packaging
- scanJavaDir("/usr/lib/jvm");
- scanJavaDir("/usr/lib64/jvm");
- scanJavaDir("/usr/lib32/jvm");
+ scanJavaDirs("/usr/lib/jvm");
+ scanJavaDirs("/usr/lib64/jvm");
+ scanJavaDirs("/usr/lib32/jvm");
// javas stored in Prism Launcher's folder
- scanJavaDir("java");
+ scanJavaDirs("java");
// manually installed JDKs in /opt
- scanJavaDir("/opt/jdk");
- scanJavaDir("/opt/jdks");
+ scanJavaDirs("/opt/jdk");
+ scanJavaDirs("/opt/jdks");
// flatpak
- scanJavaDir("/app/jdk");
+ scanJavaDirs("/app/jdk");
javas = addJavasFromEnv(javas);
javas.removeDuplicates();
return javas;