diff --git a/jadx-cli/src/main/java/jadx/cli/JadxCLI.java b/jadx-cli/src/main/java/jadx/cli/JadxCLI.java
index 1aed0f167..ceca627d8 100644
--- a/jadx-cli/src/main/java/jadx/cli/JadxCLI.java
+++ b/jadx-cli/src/main/java/jadx/cli/JadxCLI.java
@@ -11,7 +11,7 @@ import org.slf4j.LoggerFactory;
public class JadxCLI {
private static final Logger LOG = LoggerFactory.getLogger(JadxCLI.class);
- public static void main(String[] args) throws JadxException {
+ public static void main(String[] args) {
try {
JadxCLIArgs jadxArgs = new JadxCLIArgs();
if (processArgs(jadxArgs, args)) {
diff --git a/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java b/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java
index 8d70658fe..60d12c02d 100644
--- a/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java
+++ b/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java
@@ -25,6 +25,8 @@ import com.beust.jcommander.ParameterException;
public class JadxCLIArgs implements IJadxArgs {
+ protected static final int DEFAULT_THREADS_COUNT = Math.max(1, Runtime.getRuntime().availableProcessors() / 2);
+
@Parameter(description = " (.dex, .apk, .jar or .class)")
protected List files;
@@ -32,7 +34,7 @@ public class JadxCLIArgs implements IJadxArgs {
protected String outDirName;
@Parameter(names = {"-j", "--threads-count"}, description = "processing threads count")
- protected int threadsCount = Math.max(1, Runtime.getRuntime().availableProcessors() / 2);
+ protected int threadsCount = DEFAULT_THREADS_COUNT;
@Parameter(names = {"-r", "--no-res"}, description = "do not decode resources")
protected boolean skipResources = false;
@@ -108,7 +110,7 @@ public class JadxCLIArgs implements IJadxArgs {
}
try {
if (threadsCount <= 0) {
- throw new JadxException("Threads count must be positive");
+ throw new JadxException("Threads count must be positive, got: " + threadsCount);
}
if (files != null) {
for (String fileName : files) {
diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java
index 7640feba5..a522aa1ff 100644
--- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java
+++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java
@@ -43,6 +43,12 @@ public class JadxSettings extends JadxCLIArgs {
JadxSettingsAdapter.store(this);
}
+ public void fixOnLoad() {
+ if (threadsCount <= 0) {
+ threadsCount = DEFAULT_THREADS_COUNT;
+ }
+ }
+
public String getLastOpenFilePath() {
return lastOpenFilePath;
}
diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java
index c9c8e08e5..e2c34dcba 100644
--- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java
+++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java
@@ -50,6 +50,7 @@ public class JadxSettingsAdapter {
return new JadxSettings();
}
LOG.debug("Loaded settings: {}", makeString(settings));
+ settings.fixOnLoad();
return settings;
} catch (Exception e) {
LOG.error("Error load settings", e);