Java 20 shenanigans 😝

master
Caleb Fontenot 2023-09-14 16:55:02 +07:00
parent 42fe884f16
commit d00d7318b5
17 changed files with 132 additions and 43 deletions

@ -0,0 +1,41 @@
Script started on 2023-06-27 02:14:53-05:00 [COMMAND="./run.sh" TERM="xterm-256color" TTY="/dev/pts/2" COLUMNS="76" LINES="38"]
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< com.calebfontenot:MP5_CalebFontenot >-----------------
[INFO] Building MP5_CalebFontenot 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:3.1.0:java (default-cli) @ MP5_CalebFontenot ---
Enter 0 to quit, and 1 to enter the number of students: 10 
Enter the number of students: 10
Student 1 is interacting with the lockers!
true true true true true true true true true true 
Student 2 is interacting with the lockers!
true false true false true false true false true false 
Student 3 is interacting with the lockers!
true false false false true true true false false false 
Student 4 is interacting with the lockers!
true false false true true true true true false false 
Student 5 is interacting with the lockers!
true false false true false true true true false true 
Student 6 is interacting with the lockers!
true false false true false false true true false true 
Student 7 is interacting with the lockers!
true false false true false false false true false true 
Student 8 is interacting with the lockers!
true false false true false false false false false true 
Student 9 is interacting with the lockers!
true false false true false false false false true true 
Student 10 is interacting with the lockers!
true false false true false false false false true false 
Locker 1 is open.
Locker 4 is open.
Locker 9 is open.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.794 s
[INFO] Finished at: 2023-06-27T02:15:16-05:00
[INFO] ------------------------------------------------------------------------

Script done on 2023-06-27 02:15:17-05:00 [COMMAND_EXIT_CODE="0"]

@ -0,0 +1,4 @@
Script started on 2023-06-27 02:14:09-05:00 [COMMAND="./run.shANSI" TERM="xterm-256color" TTY="/dev/pts/2" COLUMNS="76" LINES="38"]
zsh:1: no such file or directory: ./run.shANSI
Script done on 2023-06-27 02:14:10-05:00 [COMMAND_EXIT_CODE="127"]

@ -0,0 +1,7 @@
com/calebfontenot/lab4_calebfontenot/TestCircleRectangle$Apple.class
com/calebfontenot/lab4_calebfontenot/Circle.class
com/calebfontenot/lab4_calebfontenot/Rectangle.class
com/calebfontenot/lab4_calebfontenot/GeometricObject.class
com/calebfontenot/lab4_calebfontenot/TestCircleRectangle$Fruit.class
com/calebfontenot/lab4_calebfontenot/Lab4_CalebFontenot.class
com/calebfontenot/lab4_calebfontenot/TestCircleRectangle.class

@ -0,0 +1,5 @@
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/Lab4_CalebFontenot.java
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/TestCircleRectangle.java
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/Circle.java
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/GeometricObject.java
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/Rectangle.java

@ -119,7 +119,43 @@ is divided into following sections:
<property name="module.name" value=""/>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property,-init-modules-supported" name="-do-init">
<property name="platform.java" value="${java.home}/bin/java"/>
<j2seproject1:property name="platform.home" value="platforms.${platform.active}.home"/>
<j2seproject1:property name="platform.bootcp" value="platforms.${platform.active}.bootclasspath"/>
<j2seproject1:property name="platform.compiler" value="platforms.${platform.active}.compile"/>
<j2seproject1:property name="platform.javac.tmp" value="platforms.${platform.active}.javac"/>
<condition property="platform.javac" value="${platform.home}/bin/javac">
<equals arg1="${platform.javac.tmp}" arg2="$${platforms.${platform.active}.javac}"/>
</condition>
<property name="platform.javac" value="${platform.javac.tmp}"/>
<j2seproject1:property name="platform.java.tmp" value="platforms.${platform.active}.java"/>
<condition property="platform.java" value="${platform.home}/bin/java">
<equals arg1="${platform.java.tmp}" arg2="$${platforms.${platform.active}.java}"/>
</condition>
<property name="platform.java" value="${platform.java.tmp}"/>
<j2seproject1:property name="platform.javadoc.tmp" value="platforms.${platform.active}.javadoc"/>
<condition property="platform.javadoc" value="${platform.home}/bin/javadoc">
<equals arg1="${platform.javadoc.tmp}" arg2="$${platforms.${platform.active}.javadoc}"/>
</condition>
<property name="platform.javadoc" value="${platform.javadoc.tmp}"/>
<condition property="platform.invalid" value="true">
<or>
<contains string="${platform.javac}" substring="$${platforms."/>
<contains string="${platform.java}" substring="$${platforms."/>
<contains string="${platform.javadoc}" substring="$${platforms."/>
</or>
</condition>
<fail unless="platform.home">Must set platform.home</fail>
<fail unless="platform.bootcp">Must set platform.bootcp</fail>
<fail unless="platform.java">Must set platform.java</fail>
<fail unless="platform.javac">Must set platform.javac</fail>
<fail if="platform.invalid">
The J2SE Platform is not correctly set up.
Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files.
Either open the project in the IDE and setup the Platform with the same name or add it manually.
For example like this:
ant -Duser.properties.file=&lt;path_to_property_file&gt; jar (where you put the property "platforms.${platform.active}.home" in a .properties file)
or ant -Dplatforms.${platform.active}.home=&lt;path_to_JDK_home&gt; jar (where no properties file is used)
</fail>
<available file="${manifest.file}" property="manifest.available"/>
<condition property="splashscreen.available">
<and>
@ -242,20 +278,6 @@ is divided into following sections:
<condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
<isset property="profile.available"/>
</condition>
<condition else="false" property="jdkBug6558476">
<and>
<matches pattern="1\.[56]" string="${java.specification.version}"/>
<not>
<os family="unix"/>
</not>
</and>
</condition>
<condition else="false" property="javac.fork">
<or>
<istrue value="${jdkBug6558476}"/>
<istrue value="${javac.external.vm}"/>
</or>
</condition>
<property name="jar.index" value="false"/>
<property name="jar.index.metainf" value="${jar.index}"/>
<property name="copylibs.rebase" value="true"/>
@ -343,7 +365,7 @@ is divided into following sections:
</path>
</resourcecount>
</condition>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/>
@ -394,7 +416,7 @@ is divided into following sections:
<property location="${build.dir}/empty" name="empty.dir"/>
<mkdir dir="${empty.dir}"/>
<mkdir dir="@{apgeneratedsrcdir}"/>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/>
@ -436,7 +458,7 @@ is divided into following sections:
<sequential>
<property location="${build.dir}/empty" name="empty.dir"/>
<mkdir dir="${empty.dir}"/>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/>
@ -515,7 +537,7 @@ is divided into following sections:
<element name="customizePrototype" optional="true"/>
<sequential>
<property name="junit.forkmode" value="perTest"/>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
@ -543,7 +565,7 @@ is divided into following sections:
<element name="customizePrototype" optional="true"/>
<sequential>
<property name="junit.forkmode" value="perTest"/>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
@ -619,7 +641,7 @@ is divided into following sections:
</fileset>
</union>
<taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
<testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="MP2-chapter4_Java20_CalebFontenot" testname="TestNG tests" workingDir="${work.dir}">
<testng classfilesetref="test.set" failureProperty="tests.failed" jvm="${platform.java}" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="MP2-chapter4_Java20_CalebFontenot" testname="TestNG tests" workingDir="${work.dir}">
<xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
<propertyset>
<propertyref prefix="test-sys-prop."/>
@ -850,6 +872,9 @@ is divided into following sections:
<classpath>
<path path="@{classpath}"/>
</classpath>
<bootclasspath>
<path path="${platform.bootcp}"/>
</bootclasspath>
</nbjpdastart>
</sequential>
</macrodef>
@ -899,7 +924,7 @@ is divided into following sections:
<attribute default="jvm" name="jvm"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" module="@{modulename}">
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}" module="@{modulename}">
<classpath>
<path path="@{classpath}"/>
</classpath>
@ -933,7 +958,7 @@ is divided into following sections:
<attribute default="jvm" name="jvm"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}">
<classpath>
<path path="@{classpath}"/>
</classpath>
@ -965,7 +990,7 @@ is divided into following sections:
<attribute default="jvm" name="jvm"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}">
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
<redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
@ -1199,7 +1224,7 @@ is divided into following sections:
<j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
<echo level="info">To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo level="info">java -jar "${dist.jar.resolved}"</echo>
<echo level="info">${platform.java} -jar "${dist.jar.resolved}"</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-check-do-mkdist" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
<j2seproject1:jar manifest="${tmp.manifest.file}"/>
@ -1301,8 +1326,8 @@ is divided into following sections:
<isset property="main.class.available"/>
</and>
</condition>
<property name="platform.jlink" value="${jdk.home}/bin/jlink"/>
<property name="jlink.systemmodules.internal" value="${jdk.home}/jmods"/>
<property name="platform.jlink" value="${platform.home}/bin/jlink"/>
<property name="jlink.systemmodules.internal" value="${platform.home}/jmods"/>
<exec executable="${platform.jlink}">
<arg value="--module-path"/>
<arg path="${jlink.systemmodules.internal}:${run.modulepath}:${dist.jar}"/>
@ -1495,16 +1520,19 @@ is divided into following sections:
</not>
</and>
</condition>
<exec executable="${platform.java}" failonerror="false" outputproperty="platform.version.output">
<arg value="-version"/>
</exec>
<condition else="" property="bug5101868workaround" value="*.java">
<matches pattern="1\.[56](\..*)?" string="${java.version}"/>
<matches multiline="true" pattern="1\.[56](\..*)?" string="${platform.version.output}"/>
</condition>
<condition else="" property="javadoc.html5.cmd.line.arg" value="-html5">
<and>
<isset property="javadoc.html5"/>
<available file="${jdk.home}${file.separator}lib${file.separator}jrt-fs.jar"/>
<available file="${platform.home}${file.separator}lib${file.separator}jrt-fs.jar"/>
</and>
</condition>
<javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" executable="${platform.javadoc}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
<path path="${javac.classpath}"/>
</classpath>

@ -1,8 +1,8 @@
build.xml.data.CRC32=3b569e2a
build.xml.data.CRC32=27242178
build.xml.script.CRC32=413afed0
build.xml.stylesheet.CRC32=f85dc8f2@1.107.0.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=3b569e2a
nbproject/build-impl.xml.script.CRC32=80ea1a25
nbproject/build-impl.xml.data.CRC32=27242178
nbproject/build-impl.xml.script.CRC32=66eac23f
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.107.0.48

@ -40,7 +40,7 @@ jar.archive.disabled=${jnlp.enabled}
jar.compress=false
jar.index=${jnlp.enabled}
javac.classpath=\
${libs.JavaFX17.classpath}
${libs.JavaFX20.classpath}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
@ -49,12 +49,11 @@ javac.modulepath=
javac.processormodulepath=
javac.processorpath=\
${javac.classpath}
javac.source=17
javac.target=17
javac.source=20
javac.target=20
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.JavaFX17.classpath}
${build.classes.dir}
javac.test.modulepath=\
${javac.modulepath}
javac.test.processorpath=\
@ -98,10 +97,11 @@ manifest.custom.permissions=
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=default_platform
platform.active=Graal_JDK_20
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
run.jvmargs=-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-UseJVMCICompiler -XX:-UseJVMCINativeLibrary --module-path=/usr/lib --add-modules javafx.fxml,javafx.controls,javafx.media,javafx.fxml
run.modulepath=\
${javac.modulepath}
run.test.classpath=\

@ -4,6 +4,7 @@
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>MP2-chapter4_Java20_CalebFontenot</name>
<explicit-platform explicit-source-supported="true"/>
<source-roots>
<root id="src.dir"/>
</source-roots>

@ -39,6 +39,7 @@ public class BouncingBall extends Pane {
final double radius = 20;
private double x = radius, y = radius;
private double dx = 1, dy = 1;
private long moveEvent = 0;
private Circle circle = new Circle(x, y, radius);
private Rectangle racket = new Rectangle(RACKET_LENGTH, 20);
private Label infoLabel = new Label("Your mouse cursor must be inside the bounds of the window to play!");
@ -48,8 +49,8 @@ public class BouncingBall extends Pane {
private Label computerScoreLabel = new Label("Computer Score: 0");
private Label nowPlaying = new Label();
private Button restartBgm = new Button("Restart BGM");
private Label jvmVersion = new Label("Java version: Java " + System.getProperty("java.version"));
private Label jvmVersion = new Label("JVM version: " + System.getProperty("java.vendor.version"));
private Label moveEventLabel = new Label("Move events: ");
private Timeline animation;
private int computerScore, playerScore = 0;
@ -65,8 +66,9 @@ public class BouncingBall extends Pane {
textPane.add(playerScoreLabel, 0, 2);
textPane.add(computerScoreLabel, 0, 3);
textPane.add(nowPlaying, 0, 4);
textPane.add(jvmVersion, 0, 5);
textPane.add(restartBgm, 0, 6);
textPane.add(moveEventLabel, 0, 5);
textPane.add(jvmVersion, 0, 6);
textPane.add(restartBgm, 0, 7);
getChildren().addAll(circle, racket, textPane); // Place a ball into this pane
racket.relocate(0, 580);
playSound("bgm");
@ -155,6 +157,7 @@ public class BouncingBall extends Pane {
}
public void moveRacket(double x) {
moveEventLabel.setText("Move events: " + ++moveEvent);
racket.relocate(x, getHeight() - 20);
}