Java Formatter is broken somehow in my workspace
So I played around trying to use a custom formatter for Java. At some point my workspace broke and now I cannot format any Java code. I tried to remove every setting related to formatting. I used "clean the Java language server workspace" I deleted workspace caches in %userprofile%\AppData\Roaming\Code
Nothing works. Now I get the window "There is no formatter for Java installed" whenever I try to format some Java file.
I tried to set up a formater again. I added the file, used these settings:
"java.format.settings.url": ".vscode/GoogleStyle.xml",
And now I can run "Open Java Formatter Setting Wth Preview ", but I still cannot format my code.
Also I created another small project with one Java file and there the formatter works.
Environment
- Operating System: Windows 11
- JDK version: 11 and 17
- Visual Studio Code version: 1.71.2
- Java extension version: 1.11.0
@CsCherrYY
Now I get the window "There is no formatter for Java installed" whenever I try to format some Java file.
two possible reasons:
-
java.format.enabledis set to false - The java extension is not activated yet or failed to activate. You can check (hover on) the language status in the status bar when you open a java file:

Yes, I suspect the Java extension is not properly activated, but I cannot find exactly the problem. It seems to recognize maven projects, java files, method outlines inside files, etc.


I can see some diagnostics with Java type in your screenshot, and they should be reported by java extension. Can you use other features, such as go to definition and trigger auto completion (ctrl+space)? Or a sample project would be very helpful.
Ctrl+click works on most things, not everything. Auto completion also works. But I cannot use formatters still.
Sorry I cannot provide the project that has this problem. On smaller test projects, there is no issue.
I looked at the Java language server logs, and there is this persistent error - on every opening of the project:
!ENTRY org.eclipse.jdt.ls.core 4 0 2022-10-04 17:05:47.731
!MESSAGE Offset > length: 1039 > 757
!STACK 0
org.eclipse.jface.text.BadLocationException: Offset > length: 1039 > 757
at org.eclipse.jface.text.ListLineTracker.getLineNumberOfOffset(ListLineTracker.java:141)
at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:155)
at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:872)
at org.eclipse.jdt.ls.core.internal.handlers.JsonRpcHelpers.toLine(JsonRpcHelpers.java:156)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.convertRange(WorkspaceDiagnosticsHandler.java:425)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnostic(WorkspaceDiagnosticsHandler.java:399)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.lambda$3(WorkspaceDiagnosticsHandler.java:383)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnosticsArray(WorkspaceDiagnosticsHandler.java:385)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.publishDiagnostics(WorkspaceDiagnosticsHandler.java:324)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.publishDiagnostics(WorkspaceDiagnosticsHandler.java:239)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer$2.run(JDTLanguageServer.java:275)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
!ENTRY org.eclipse.core.jobs 4 2 2022-10-04 17:05:47.731
!MESSAGE An internal error occurred during: "Initialize workspace".
!STACK 0
java.lang.NullPointerException: Cannot load from int array because "startPos" is null
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.convertRange(WorkspaceDiagnosticsHandler.java:426)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnostic(WorkspaceDiagnosticsHandler.java:399)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.lambda$3(WorkspaceDiagnosticsHandler.java:383)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnosticsArray(WorkspaceDiagnosticsHandler.java:385)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.publishDiagnostics(WorkspaceDiagnosticsHandler.java:324)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.publishDiagnostics(WorkspaceDiagnosticsHandler.java:239)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer$2.run(JDTLanguageServer.java:275)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
I have exact problem in workspace with multi folder, java formatting is not working. If i open same folder in new VS window it works as expected.
{
"editor.formatOnSave": true,
"java.format.settings.url": "eclipse-formatter.xml"
}