Javac does not produce an output file to run?

Jeffrey Walton noloader at gmail.com
Thu Feb 17 04:47:39 UTC 2022


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