Java 8 compilation error quine (12203 bytes)
Generated on windows + mingw with java 1.8.0_11 jdk, using this command:
echo a > Q.java; while true; do javac Q.java 2> Q.err; if [ $(diff Q.err Q.java | wc -c) -eq 0 ]; then break; fi; cat Q.err > Q.java; done
May not be the shortest one, may not be the longest one either, more a proof of concept. Works because error output shows at most 100 errors.
Q.java:1: error: class, interface, or enum expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:1: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:1: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
Q.java:1: error: class, interface, or enum expected
^
(use -source 1.4 or lower to use 'enum' as an identifier)
Q.java:1: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:2: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:2: error: ';' expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:2: error: illegal start of type
Q.java:1: error: class, interface, or enum expected
^
Q.java:2: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:2: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:2: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:2: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
Q.java:1: error: class, interface, or enum expected
^
(use -source 1.4 or lower to use 'enum' as an identifier)
Q.java:2: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:3: error: illegal start of type
^
^
Q.java:4: error: = expected
Q.java:1: error: <identifier> expected
^
Q.java:4: error: <identifier> expected
Q.java:1: error: <identifier> expected
^
Q.java:4: error: ';' expected
Q.java:1: error: <identifier> expected
^
Q.java:4: error: illegal start of type
Q.java:1: error: <identifier> expected
^
Q.java:4: error: = expected
Q.java:1: error: <identifier> expected
^
Q.java:5: error: '(' expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:5: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:5: error: ';' expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:5: error: illegal start of type
Q.java:1: error: class, interface, or enum expected
^
Q.java:5: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:5: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:5: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:5: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
Q.java:1: error: class, interface, or enum expected
^
(use -source 1.4 or lower to use 'enum' as an identifier)
Q.java:5: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:6: error: illegal start of type
^
^
Q.java:7: error: = expected
Q.java:1: error: <identifier> expected
^
Q.java:7: error: <identifier> expected
Q.java:1: error: <identifier> expected
^
Q.java:7: error: ';' expected
Q.java:1: error: <identifier> expected
^
Q.java:7: error: illegal start of type
Q.java:1: error: <identifier> expected
^
Q.java:7: error: = expected
Q.java:1: error: <identifier> expected
^
Q.java:8: error: '(' expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:8: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:8: error: ';' expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:8: error: illegal start of type
Q.java:1: error: class, interface, or enum expected
^
Q.java:8: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:8: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:8: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:8: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
Q.java:1: error: class, interface, or enum expected
^
(use -source 1.4 or lower to use 'enum' as an identifier)
Q.java:8: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:9: error: illegal start of type
^
^
Q.java:10: error: = expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: <identifier> expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: ';' expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: illegal start of type
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: = expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: = expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: illegal start of type
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: <identifier> expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: unclosed character literal
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: ';' expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: unclosed character literal
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: = expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: = expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: = expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:10: error: = expected
Q.java:1: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
^
Q.java:11: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:11: error: ';' expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:11: error: illegal start of type
Q.java:1: error: class, interface, or enum expected
^
Q.java:11: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:11: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:11: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:11: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
Q.java:1: error: class, interface, or enum expected
^
(use -source 1.4 or lower to use 'enum' as an identifier)
Q.java:11: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:12: error: illegal start of type
^
^
Q.java:12: error: <identifier> expected
^
^
Q.java:13: error: = expected
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:13: error: ';' expected
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:13: error: <identifier> expected
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:13: error: = expected
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:13: error: ';' expected
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:13: error: = expected
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:13: error: unclosed character literal
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:13: error: unclosed character literal
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:13: error: = expected
(use -source 1.4 or lower to use 'enum' as an identifier)
^
Q.java:14: error: <identifier> expected
Q.java:1: error: = expected
^
Q.java:14: error: ';' expected
Q.java:1: error: = expected
^
Q.java:14: error: illegal start of type
Q.java:1: error: = expected
^
Q.java:14: error: = expected
Q.java:1: error: = expected
^
Q.java:14: error: illegal start of type
Q.java:1: error: = expected
^
Q.java:15: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: illegal start of type
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: illegal start of type
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: ';' expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: <identifier> expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:15: error: as of release 5, 'enum' is a keyword, and may not be used as an identifier
Q.java:1: error: class, interface, or enum expected
^
(use -source 1.4 or lower to use 'enum' as an identifier)
Q.java:15: error: = expected
Q.java:1: error: class, interface, or enum expected
^
Q.java:16: error: illegal start of type
^
^
Q.java:17: error: = expected
Q.java:2: error: <identifier> expected
^
Q.java:17: error: <identifier> expected
Q.java:2: error: <identifier> expected
^
Q.java:17: error: ';' expected
Q.java:2: error: <identifier> expected
^
Q.java:17: error: illegal start of type
Q.java:2: error: <identifier> expected
^
Q.java:17: error: = expected
Q.java:2: error: <identifier> expected
^
100 errors
1I tried doing this in java and got a p3 oscilator. This was the shortest phase: (Compile from q.java):
Error: Could not find or load main class Q
– SuperJedi224 – 2015-06-01T12:57:51.8802Ha, because of a syntactic ambiguity in the first sentence, I thought the challenge here was to produce a program which normally produces no output, but if you pass its own code to it as input, it produces an error. – Steve Bennett – 2017-04-10T06:32:29.527
2When reporting an error, APL always prints a customizable error name, optionally an error message, the name of the program that caused the error, the (bracketed) line number where the error occurred, the line of code that caused the error, and a line with a caret indicating where parsing stopped. Any hope for participation here? – Adám – 2017-05-07T21:50:51.480
1@SteveBennett Why haven't you made that challenge yet? – CalculatorFeline – 2017-05-28T01:53:04.973
1
It's non-observable whether something is output by the runtime or the program. You could argue that a syntacticly invalid program is actually triggering a built-in function that prints an error message, making rule 4 impossible to fulfill. Is this a valid submission in Python 3?
– Esolanging Fruit – 2017-05-28T05:55:49.880I wonder if we can do the same but with warnings instead of errors... – G. Sliepen – 2019-08-23T19:15:16.747
7What is "error output"? And what does it mean to "generate an error message"? More specifically: 1) Does the output have to be to stderr? 2) If the runtime logs an error to syslog and doesn't write anything to stderr, what should be compared to the source of the program? 3) If the runtime throws an exception internally when given an empty program, but requires a flag to actually print the exception and so ends up exiting with a non-zero exit code but no output, has an error message been generated? – Peter Taylor – 2014-08-16T09:24:53.790