Javac does not produce an output file to run?
David Holmes
david.holmes at oracle.com
Thu Feb 17 05:28:24 UTC 2022
Hi Jeffrey,
This is a mailing list for discussing the OpenJDK not for general help
on how to write Java programs. There are many resources for beginner
Java programmers e.g.
https://docs.oracle.com/javase/tutorial/getStarted/index.html
That said note that javac compiles Java source code (.java files) into
Java bytecode (.class files). You then use the java launcher to execute
(via interpretation and JIT compilation) those .class files.
Regards,
David
On 17/02/2022 2:47 pm, Jeffrey Walton wrote:
> Hi Everyne,
>
> I'm having problems creating a test file with a main() method.
> Everything seems to build but javac does not produce an output file
> (and it does not error). It looks like the same mystery at
> https://stackoverflow.com/questions/8295538/javac-not-producing-output.
>
> I have not used Java in about 30 years. I am current on my C, C++ and ObjC.
>
> How do I fix this?
>
> Thanks in advance.
>
> ==========
> Here's the one hint I have. Javac is building TestClient.class, but
> not TestClient to run:
>
> $ find . -iname 'TestClient*'
> ./com/example/technology/framework/security/encryption/TestClient.class
> ./TestClient.java
>
> Here's what I want to do:
>
> $ ./TestClient
>
> ==========
> Here's the tail of the build output, when TestClient is supposed to be built.
>
> $ make
> ...
> jar cf example-encryption.jar
> com/example/technology/framework/security/encryption/Encry
> ptionConstants.class
> com/example/technology/framework/security/encryption/EncryptionExce
> ption.class com/example/technology/framework/security/encryption/EncryptionUtility.class
> com/example/technology/framework/security/encryption/EncryptionManager.class
>
> javac -cp example-encryption.jar -verbose -g -sourcepath ./ -d ./
> TestClient.java
> [parsing started
> SimpleFileObject[/home/jwalton/Desktop/encryption/TestClient.java]]
> [parsing completed 11ms]
> [loading /modules/jdk.unsupported/module-info.class]
> [loading /modules/jdk.attach/module-info.class]
> [loading /modules/jdk.hotspot.agent/module-info.class]
> [loading /modules/jdk.naming.ldap/module-info.class]
> [loading /modules/jdk.jconsole/module-info.class]
> [loading /modules/jdk.zipfs/module-info.class]
> [loading /modules/jdk.jlink/module-info.class]
> [loading /modules/jdk.naming.rmi/module-info.class]
> [loading /modules/java.naming/module-info.class]
> [loading /modules/jdk.unsupported.desktop/module-info.class]
> [loading /modules/jdk.rmic/module-info.class]
> [loading /modules/jdk.jdi/module-info.class]
> [loading /modules/jdk.charsets/module-info.class]
> [loading /modules/java.logging/module-info.class]
> [loading /modules/jdk.security.jgss/module-info.class]
> [loading /modules/jdk.jfr/module-info.class]
> [loading /modules/jdk.management.agent/module-info.class]
> [loading /modules/java.datatransfer/module-info.class]
> [loading /modules/jdk.internal.opt/module-info.class]
> [loading /modules/jdk.pack/module-info.class]
> [loading /modules/java.scripting/module-info.class]
> [loading /modules/jdk.jshell/module-info.class]
> [loading /modules/jdk.jstatd/module-info.class]
> [loading /modules/java.smartcardio/module-info.class]
> [loading /modules/jdk.net/module-info.class]
> [loading /modules/java.security.sasl/module-info.class]
> [loading /modules/jdk.accessibility/module-info.class]
> [loading /modules/java.security.jgss/module-info.class]
> [loading /modules/jdk.internal.le/module-info.class]
> [loading /modules/jdk.internal.jvmstat/module-info.class]
> [loading /modules/jdk.editpad/module-info.class]
> [loading /modules/jdk.javadoc/module-info.class]
> [loading /modules/jdk.management.jfr/module-info.class]
> [loading /modules/java.se/module-info.class]
> [loading /modules/jdk.jartool/module-info.class]
> [loading /modules/jdk.jsobject/module-info.class]
> [loading /modules/jdk.naming.dns/module-info.class]
> [loading /modules/java.transaction.xa/module-info.class]
> [loading /modules/java.sql.rowset/module-info.class]
> [loading /modules/java.instrument/module-info.class]
> [loading /modules/jdk.sctp/module-info.class]
> [loading /modules/jdk.internal.vm.compiler/module-info.class]
> [loading /modules/jdk.jdwp.agent/module-info.class]
> [loading /modules/jdk.scripting.nashorn/module-info.class]
> [loading /modules/java.desktop/module-info.class]
> [loading /modules/jdk.internal.vm.ci/module-info.class]
> [loading /modules/jdk.compiler/module-info.class]
> [loading /modules/java.base/module-info.class]
> [loading /modules/jdk.httpserver/module-info.class]
> [loading /modules/java.sql/module-info.class]
> [loading /modules/jdk.aot/module-info.class]
> [loading /modules/java.management.rmi/module-info.class]
> [loading /modules/jdk.internal.ed/module-info.class]
> [loading /modules/java.prefs/module-info.class]
> [loading /modules/jdk.localedata/module-info.class]
> [loading /modules/jdk.jdeps/module-info.class]
> [loading /modules/jdk.xml.dom/module-info.class]
> [loading /modules/jdk.dynalink/module-info.class]
> [loading /modules/jdk.management/module-info.class]
> [loading /modules/jdk.crypto.cryptoki/module-info.class]
> [loading /modules/jdk.crypto.ec/module-info.class]
> [loading /modules/java.xml/module-info.class]
> [loading /modules/java.rmi/module-info.class]
> [loading /modules/java.compiler/module-info.class]
> [loading /modules/jdk.security.auth/module-info.class]
> [loading /modules/java.net.http/module-info.class]
> [loading /modules/java.management/module-info.class]
> [loading /modules/java.xml.crypto/module-info.class]
> [loading /modules/jdk.scripting.nashorn.shell/module-info.class]
> [loading /modules/jdk.jcmd/module-info.class]
> [loading /modules/jdk.internal.vm.compiler.management/module-info.class]
> [search path for source files: .]
> [search path for class files:
> /usr/lib/jvm/java-11-openjdk-amd64/lib/modules,cna-encrypt
> ion.jar]
> [loading /modules/java.base/java/lang/Object.class]
> [loading /modules/java.base/java/lang/String.class]
> [loading /modules/java.base/java/lang/Deprecated.class]
> [loading /modules/java.base/java/lang/annotation/Retention.class]
> [loading /modules/java.base/java/lang/annotation/RetentionPolicy.class]
> [loading /modules/java.base/java/lang/annotation/Target.class]
> [loading /modules/java.base/java/lang/annotation/ElementType.class]
> [checking com.cna.technology.framework.security.encryption.TestClient]
> [loading /modules/java.base/java/io/Serializable.class]
> [loading /modules/java.base/java/lang/AutoCloseable.class]
> [loading /modules/java.base/java/lang/Byte.class]
> [loading /modules/java.base/java/lang/Character.class]
> [loading /modules/java.base/java/lang/Short.class]
> [loading /modules/java.base/java/lang/Long.class]
> [loading /modules/java.base/java/lang/Float.class]
> [loading /modules/java.base/java/lang/Integer.class]
> [loading /modules/java.base/java/lang/Double.class]
> [loading /modules/java.base/java/lang/Boolean.class]
> [loading /modules/java.base/java/lang/Void.class]
> [loading /modules/java.base/java/lang/System.class]
> [loading /modules/java.base/java/io/PrintStream.class]
> [loading /modules/java.base/java/lang/Appendable.class]
> [loading /modules/java.base/java/io/Closeable.class]
> [loading /modules/java.base/java/io/FilterOutputStream.class]
> [loading /modules/java.base/java/io/OutputStream.class]
> [loading /modules/java.base/java/io/Flushable.class]
> [loading /modules/java.base/java/lang/Comparable.class]
> [loading /modules/java.base/java/lang/CharSequence.class]
> [loading /home/jwalton/Desktop/encryption/cna-encryption.jar(/com/cna/technology/framewo
> rk/security/encryption/EncryptionManager.class)]
> [loading /home/jwalton/Desktop/encryption/cna-encryption.jar(/com/cna/technology/framewo
> rk/security/encryption/EncryptionException.class)]
> [loading /modules/java.base/java/lang/Exception.class]
> [loading /modules/java.base/java/lang/Throwable.class]
> [loading /modules/java.base/java/lang/Error.class]
> [loading /modules/java.base/java/lang/RuntimeException.class]
> [loading /modules/java.base/java/lang/invoke/StringConcatFactory.class]
> [loading /modules/java.base/java/lang/invoke/MethodHandles.class]
> [loading /modules/java.base/java/lang/invoke/MethodHandles$Lookup.class]
> [loading /modules/java.base/java/lang/invoke/MethodType.class]
> [loading /modules/java.base/java/lang/invoke/CallSite.class]
> [wrote ./com/cna/technology/framework/security/encryption/TestClient.class]
> [total 206ms]
>
> ==========
> Here's the makefile. It produces the jar file with the expected
> directory structure.
>
> $ cat makefile
>
> # EncryptionConstants.java EncryptionManager.java TestClient.java
> # EncryptionException.java EncryptionUtility.java
>
> PROJ_BASE = com/example/technology/framework/security/encryption
>
> JC = javac
> JFLAGS = -verbose -g -sourcepath ./ -d ./
>
> JAR = jar
> JAROPTS = cf
>
> # Cannot do this. Javac is too stupid to find what it needs
> # JAR_SRCS = $(filter-out TestClient.java,$(sort $(wildcard *java)))
> JAR_SRCS = EncryptionConstants.java EncryptionException.java
> EncryptionUtility.java Encr
> yptionManager.java
> JAR_OBJS := $(patsubst %,$(PROJ_BASE)/%,$(JAR_SRCS:.java=.class))
>
> all: TestClient
>
> TestClient: example-encryption.jar
> $(JC) -cp example-encryption.jar $(JFLAGS) TestClient.java
>
> example-encryption.jar: $(JAR_OBJS)
> $(JAR) $(strip $(JAROPTS) $@ $(JAR_OBJS))
>
> $(PROJ_BASE)/%.class : %.java
> $(JC) $(strip $(JFLAGS)) $<
>
> clean:
> rm -f *.class rm -f ./*~ && rm -f example-encryption.jar && rm
> -rf ./build ./com
>
> zip:
> zip -u -9 encryption.zip *.java
More information about the discuss
mailing list