angryip / ipscan

Angry IP Scanner - fast and friendly network scanner
angryip.org
GNU General Public License v2.0
4.15k stars 718 forks source link

not everyone has eclipse installed lol #435

Open cybershrapnel opened 9 months ago

cybershrapnel commented 9 months ago

current jar file, /sigh

java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError at net.azib.ipscan.Main.main(Main.java:50) Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 1 more Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError at net.azib.ipscan.util.GoogleAnalytics.extractFirstStackFrame(GoogleAnalytics.java:69) at net.azib.ipscan.util.GoogleAnalytics.report(GoogleAnalytics.java:54) at net.azib.ipscan.Main.main(Main.java:83) Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 3 more

bigkahuna1uk commented 8 months ago

How is this app being run?

The app comes packaged with its own JRE so it doesn't rely on the system's Java if it's installed.

For me, I see:

/Applications/Angry\ IP\ Scanner.app/Contents/MacOS/jre/bin/java -version openjdk version "17.0.6" 2023-01-17 LTS OpenJDK Runtime Environment (build 17.0.6+10-LTS) OpenJDK 64-Bit Client VM (build 17.0.6+10-LTS, mixed mode)

The main application jar has all the SWT packages/classes present so perplexing:

unzip -l /Applications/Angry\ IP\ Scanner.app/Contents/MacOS/ipscan-macX86-3.9.1.jar | grep -i eclipse 4363 02-11-2023 17:10 org/eclipse/swt/SWT.class 1347 02-11-2023 17:10 org/eclipse/swt/SWTError.class 1370 02-11-2023 17:10 org/eclipse/swt/SWTException.class 62771 02-11-2023 17:10 org/eclipse/swt/accessibility/Accessible.class 929 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleActionEvent.class 354 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleActionListener.class 1563 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleAttributeEvent.class 394 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleAttributeListener.class 1342 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleControlAdapter.class 1350 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleControlEvent.class 481 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleControlListener.class 1006 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleEditableTextEvent.class 307 02-11-2023 17:10 org/eclipse/swt/accessibility/AccessibleEditableTextListener.class

bigkahuna1uk commented 8 months ago

This is the executable which shows all the Java modules and main jar containing SWT on the classpath:

!/bin/sh

BASEDIR=$(dirname "$0") java="$BASEDIR/jre/bin/java" if [ ! -e "$java" ]; then java=java; fi exec "$java" --add-opens java.base/java.net=ALL-UNNAMED -XstartOnFirstThread -jar "$BASEDIR"/ipscan*.jar ~