salesforce/bazel-vscode-java

Java Projects contains (empty) Referenced Libraries instead of Bazel Maven JAR dependencies

vorburger opened this issue · 10 comments

After a Clean Java Language Server Workspace for #102,

when I open e.g. common/common/src/main/java/dev/enola/common/io/resource/FileResource.java,

which is an example intentionally chosen because that common/common "module" (Bazel target) doesn't depend on others,

then those com.google.common.io Guava imports don't resolve and are red.

In the "Java Projects" view, there is an (empty) Referenced Libraries, instead of Bazel Maven JAR dependencies.

enola-dev/enola#431 couldn't be the root cause of this, could it? There is no error in the .log about it...

Perhaps it would be useful to add some additional catch and log in the part of the code which sets that up?

@guw FYI at least on 1 of my computers (I'm not sure what's different on this one) I can reproduce this problem reliably, it's still there even after I Clean Java Language Server Workspace again... let me know if I can help providing any additional debugging.

Perhaps it would be useful to add some additional catch and log in the part of the code which sets that up?

Here's the log.txt - but it's "boring"?

@guw FYI at least on 1 of my computers (I'm not sure what's different on this one) I can reproduce this problem reliably,

@guw I'm facing this on one machine, which blocks me from working in a certain environment (but it works fine on another computer); here is some additional information from my machine where this always happens, the Java Build Status shows:

17ec1abd enola> bazel info [Done]
de2ff68f Initialize Workspace [Done]
a0f88908 Synchronizing projects [Done]
8d3b6ba4 Synchronizing projects [Done]
12638e36 Synchronizing projects [Done]
273764c0 Processing Bazel changes since last activation [Done]
181fb418 Validate documents [Done]
50aef1a8 Publish Diagnostics [Done]
79cd9327 Update classpath Job [Done]
25c5ad81 Background task [Done]
3c676bb9 Building [Done]
e7ba0c4c Building [Done]
eae1da83 Building [Done]
edb46b37 Building [Done]
4ca156b5 Building [Done]
d22b0e6d Building [Done]

The Bazel Build Status shows:

Tue 13:04:24: Reading workspace info
> bazel info

Synchronization Summary
=======================
Projects: 0
 Targets: 0
Strategy: null

Which ^^^ is clearly wrong (I think?)... would you perhaps like to add some additional logging for when it exec bazel ...?

Or perhaps I could even contibute some minor logging enhancements, some day... where in the code would this be?

I have a hunch that the "different environment" may have something to do with how Bazel / Bazelik is installed / found.

I have a hunch that the "different environment" may have something to do with how Bazel / Bazelik is installed / found.

For the record, mv ~/.bashrc ~/.bashrc-OFF (and mv ~/.config/fish/ ~/.config/fish-OFFalthough that hopefully shouldn't really be relevant, here) does not help.

guw commented

Is the .bazelproject file correct?

Is the .bazelproject file correct?

It's this one and the same on the computer where it works and the one where it does not.

Which ^^^ is clearly wrong (I think?).

For comparison, on the computer where it works it's:

Tue 19:50:28: Reading workspace info
> bazel info
Process finished in 0.122s
Loading: 0 packages loaded


Tue 19:50:29: Querying for all available packages in workspace
> bazel query --output package --keep_going --query_file /tmp/bazel_query_8947760601602725244.query.txt
Process finished in 0.104s
Loading: 0 packages loaded



Tue 19:50:29: Loading targets for 17 packages
> bazel query --output streamed_proto --order_output=no --noproto:locations --noproto:default_values --keep_going --query_file /tmp/bazel_query_1740310227718672278.query.txt
Process finished in 0.172s
Computing main repo mapping: 
Loading: 
Loading: 0 packages loaded
Analyzing: 2 targets (0 packages loaded, 0 targets configured)
INFO: Analyzed 2 targets (2 packages loaded, 6 targets configured).
INFO: Found 2 targets...
INFO: Elapsed time: 0.262s, Critical Path: 0.00s
INFO: 0 processes.
INFO: Build completed successfully, 0 total actions


Tue 19:50:30: Querying for Java toolchain information
> bazel cquery --output starlark --starlark:file /tmp/bazel_cquery_starlark_file_9336265339441465976.starlark.txt --query_file /tmp/bazel_cquery_1933725847932263251.query.txt
Process finished in 0.278s
Computing main repo mapping: 
Loading: 
Loading: 0 packages loaded
Analyzing: 67 targets (0 packages loaded, 0 targets configured)
Analyzing: 67 targets (0 packages loaded, 0 targets configured)
[0 / 1] checking cached actions
INFO: Analyzed 67 targets (1 packages loaded, 301 targets configured).
INFO: Found 67 targets...
INFO: Elapsed time: 1.068s, Critical Path: 0.05s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
INFO: 
INFO: Build Event Protocol files produced successfully.


Tue 19:50:33: Running build with IntelliJ aspects to collect classpath information
> bazel build --build_event_binary_file=/tmp/bazel_build_bep_12456281662037466346.txt --nobuild_event_binary_file_path_conversion --keep_going //common/common:src/test/java/dev/enola/common/protobuf/ProtobufMediaTypesTest //core/impl:src/test/java/dev/enola/core/tbd/RosettaTest //common/rdf:rdf //common/common:src/test/java/dev/enola/common/io/resource/FileResourceTest //common/thing:thing_java //common/thing:src/test/java/dev/enola/thing/MessageToThingConverterTest //common/common:src/test/java/dev/enola/common/io/resource/HttpUrlResourceTest //common/common:src/test/java/dev/enola/common/io/resource/NullResourceTest //core/impl:src/test/java/dev/enola/core/iri/URITemplateTest //common/common:src/test/java/dev/enola/common/io/resource/ReplacingResourceTest //common/protobuf:src/test/java/dev/enola/common/protobuf/MessagesTest //common/common:src/test/java/dev/enola/common/io/resource/ClasspathUrlResourceTest //core/impl:src/test/java/dev/enola/core/iri/URITemplateSplitterTest //core/impl:src/test/java/dev/enola/core/iri/URITemplateMatcherChainTest //common/yamljson:src/test/java/dev/enola/common/yamljson/YamlJsonTest //common/protobuf:protobuf //common/protobuf:src/test/java/dev/enola/common/protobuf/ProtoIOTest //core/impl:src/test/java/dev/enola/core/meta/TypeRepositoryTest //web/rest:rest //core/impl:src/test/java/dev/enola/core/meta/SchemaAspectTest //common/yamljson:yamljson //common/common:src/test/java/dev/enola/common/io/resource/ResourceProvidersTest //core/lib:src/test/java/dev/enola/core/IDsTest //core/impl:src/test/java/dev/enola/core/meta/EntityKindRepositoryTest //core/impl:src/test/java/dev/enola/core/meta/docgen/MarkdownDocGeneratorTest //cli:src/test/java/dev/enola/cli/EnolaLoggingTest //cli:src/test/java/dev/enola/cli/ClasspathHellDuplicatesCheckerTest //core/impl:impl //common/markdown:markdown //web/ui:ui //common/common:src/test/java/dev/enola/common/io/resource/MemoryResourceTest //core/lib:src/test/java/dev/enola/core/view/ThingsTest //common/common:src/test/java/dev/enola/common/io/mediatype/MediaTypeDetectorTest //common/rdf:src/test/java/dev/enola/rdf/ConvertersTest //core/impl:src/test/java/dev/enola/core/EntityServiceProviderTest //web/api:api //common/markdown:src/test/java/dev/enola/common/markdown/exec/RunnerTest //connectors/k8s:enola-k8s //web/ui:src/test/java/dev/enola/web/ui/UiTest //cli:src/test/java/dev/enola/cli/SystemOutErrCaptureTest //tools/hello:hello //core/impl:src/test/java/dev/enola/core/meta/TypeRegistryWrapperTest //web/sun:sun //web/sun:src/test/java/dev/enola/web/sun/test/SunServerTest //core/impl:src/test/java/dev/enola/core/meta/docgen/StringUtilTest //cli:enola //cli:src/test/java/dev/enola/cli/EnolaTest //core/lib:lib_java //common/common:src/test/java/dev/enola/common/io/mediatype/MediaTypesTest //core/impl:src/test/java/dev/enola/core/EntityTest //core/lib:src/test/java/dev/enola/core/ERITest //core/impl:src/test/java/dev/enola/core/grpc/EnolaGrpcServerTest //web/rest:src/test/java/dev/enola/web/rest/RestTest //connectors/demo:src/test/java/dev/enola/demo/ServerTest //connectors/demo:demo //common/common:src/test/java/dev/enola/common/io/resource/URIsTest //common/common:common //common/common:src/test/java/dev/enola/common/io/resource/ErrorResourceTest //common/protobuf:src/test/java/dev/enola/common/protobuf/MessageValidatorTest //core/impl:src/test/java/dev/enola/core/meta/EntityKindValidationsTest //common/markdown:src/test/java/dev/enola/common/markdown/exec/ExecMDTest //common/common:src/test/java/dev/enola/common/io/resource/MarkdownResourceTest //tools/hello:hello_lib //common/common:src/test/java/dev/enola/common/io/resource/FileDescriptorResourceTest //common/rdf:src/test/java/dev/enola/rdf/RdfTest //common/common:src/test/java/dev/enola/common/io/resource/EmptyResourceTest //common/common:src/test/java/dev/enola/common/io/resource/StringResourceTest --aspects=@@intellij_aspect//:intellij_info_bundled.bzl%intellij_info_aspect --aspects=@@intellij_aspect//:java_classpath.bzl%java_classpath_aspect --override_repository=intellij_aspect=/home/vorburger/.config/Code/User/workspaceStorage/5687ff7dea6a22a979f8c4dab8eb016b/redhat.java/jdt_ws/.metadata/.plugins/com.salesforce.bazel.eclipse.core/intellij-aspects/.76ff40 --output_groups=intellij-info-generic,intellij-resolve-java-direct-deps,intellij-info-java-direct-deps,runtime_classpath
Process finished in 1.1s
Reading build events... finished in 0.316s
 checking cached actions
Loading: 0 packages loaded



Tue 19:50:34: Querying for external repositories
> bazel query --output streamed_proto --order_output=no --noproto:rule_inputs_and_outputs --noproto:locations --noproto:default_values --query_file /tmp/bazel_query_12447502154645768526.query.txt
Process finished in 0.345s

Synchronization Summary
=======================
Projects: 67
 Targets: 98
Strategy: project-per-target
100.0% Synchronizing enola                                                                                          7107ms
  2.3% +- Reading workspace info                                                                                     160ms
 13.6% +- Creating workspace project                                                                                 967ms
  0.2% +- Configuring visible folders                                                                                 14ms
  5.9% +- Detecting targets                                                                                          416ms
  1.5% |  +- Querying for all available packages in workspace                                                        107ms
  3.3% |  \- Loading targets for 17 packages                                                                         234ms
 36.7% +- Provisioning Projects                                                                                     2609ms
  4.0% |  +- Querying for Java toolchain information                                                                 282ms
  0.7% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/protobu...           46ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/tbd/RosettaTest            28ms
  0.3% |  +- Provisioning Java project for target //common/rdf:rdf                                                    20ms
  0.4% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           30ms
  0.3% |  +- Provisioning Java project for target //common/thing:thing_java                                           22ms
  0.3% |  +- Provisioning Java project for target //common/thing:src/test/java/dev/enola/thing/MessageTo...           20ms
  0.5% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           36ms
  1.1% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           81ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/iri/URITempla...           28ms
  0.5% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           33ms
  0.4% |  +- Provisioning Java project for target //common/protobuf:src/test/java/dev/enola/common/proto...           26ms
  0.4% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           30ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/iri/URITempla...           26ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/iri/URITempla...           25ms
  0.3% |  +- Provisioning Java project for target //common/yamljson:src/test/java/dev/enola/common/yamlj...           19ms
  0.3% |  +- Provisioning Java project for target //common/protobuf:protobuf                                          23ms
  0.4% |  +- Provisioning Java project for target //common/protobuf:src/test/java/dev/enola/common/proto...           25ms
  1.1% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/meta/TypeRepo...           76ms
  0.4% |  +- Provisioning Java project for target //web/rest:rest                                                     25ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/meta/SchemaAs...           26ms
  0.3% |  +- Provisioning Java project for target //common/yamljson:yamljson                                          21ms
  0.3% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           23ms
  0.3% |  +- Provisioning Java project for target //core/lib:src/test/java/dev/enola/core/IDsTest                     22ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/meta/EntityKi...           27ms
  5.3% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/meta/docgen/M...          375ms
  0.3% |  +- Provisioning Java project for target //cli:src/test/java/dev/enola/cli/EnolaLoggingTest                  22ms
  0.3% |  +- Provisioning Java project for target //cli:src/test/java/dev/enola/cli/ClasspathHellDuplica...           19ms
  0.4% |  +- Provisioning Java project for target //core/impl:impl                                                    30ms
  0.3% |  +- Provisioning Java project for target //common/markdown:markdown                                          17ms
  0.2% |  +- Provisioning Java project for target //web/ui:ui                                                         17ms
  0.3% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           22ms
  0.2% |  +- Provisioning Java project for target //core/lib:src/test/java/dev/enola/core/view/ThingsTest             16ms
  1.4% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/medi...          101ms
  0.3% |  +- Provisioning Java project for target //common/rdf:src/test/java/dev/enola/rdf/ConvertersTest             18ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/EntityService...           26ms
  0.3% |  +- Provisioning Java project for target //web/api:api                                                       22ms
  0.3% |  +- Provisioning Java project for target //common/markdown:src/test/java/dev/enola/common/markd...           22ms
  0.3% |  +- Provisioning Java project for target //connectors/k8s:enola-k8s                                          22ms
  0.3% |  +- Provisioning Java project for target //web/ui:src/test/java/dev/enola/web/ui/UiTest                      18ms
  0.3% |  +- Provisioning Java project for target //cli:src/test/java/dev/enola/cli/SystemOutErrCaptureT...           20ms
  0.4% |  +- Provisioning Java project for target //tools/hello:hello                                                 25ms
  0.3% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/meta/TypeRegi...           24ms
  0.3% |  +- Provisioning Java project for target //web/sun:sun                                                       22ms
  0.4% |  +- Provisioning Java project for target //web/sun:src/test/java/dev/enola/web/sun/test/SunServ...           28ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/meta/docgen/S...           29ms
  0.3% |  +- Provisioning Java project for target //cli:enola                                                         23ms
  0.3% |  +- Provisioning Java project for target //cli:src/test/java/dev/enola/cli/EnolaTest                         21ms
  0.3% |  +- Provisioning Java project for target //core/lib:lib_java                                                 18ms
  0.3% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/medi...           24ms
  0.3% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/EntityTest                 23ms
  0.2% |  +- Provisioning Java project for target //core/lib:src/test/java/dev/enola/core/ERITest                     16ms
  1.5% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/grpc/EnolaGrp...          109ms
  0.3% |  +- Provisioning Java project for target //web/rest:src/test/java/dev/enola/web/rest/RestTest                24ms
  0.4% |  +- Provisioning Java project for target //connectors/demo:src/test/java/dev/enola/demo/ServerT...           25ms
  0.4% |  +- Provisioning Java project for target //connectors/demo:demo                                              28ms
  0.4% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           29ms
  0.5% |  +- Provisioning Java project for target //common/common:common                                              32ms
  0.4% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           27ms
  0.2% |  +- Provisioning Java project for target //common/protobuf:src/test/java/dev/enola/common/proto...           15ms
  0.4% |  +- Provisioning Java project for target //core/impl:src/test/java/dev/enola/core/meta/EntityKi...           29ms
  0.3% |  +- Provisioning Java project for target //common/markdown:src/test/java/dev/enola/common/markd...           22ms
  0.4% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           28ms
  0.4% |  +- Provisioning Java project for target //tools/hello:hello_lib                                             25ms
  0.5% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           35ms
  0.3% |  +- Provisioning Java project for target //common/rdf:src/test/java/dev/enola/rdf/RdfTest                    22ms
  0.3% |  +- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           24ms
  0.3% |  \- Provisioning Java project for target //common/common:src/test/java/dev/enola/common/io/reso...           18ms
 39.1% \- Updating classpath for workspace enola                                                                    2780ms
  0.0%    +- Computing classpath for workspace project                                                                 1ms
 36.3%    \- Computing classpath for projects using ProjectPerTargetProvisioningStrategy                            2578ms
 21.4%       +- Running build with IntelliJ aspects to collect classpath information                                1520ms
  5.1%       \- Querying for external repositories                                                                   360ms

the interesting part of all of this to compare to above is:

Synchronization Summary
=======================
Projects: 67
 Targets: 98
Strategy: project-per-target

Is the .bazelproject file correct?

I have a hunch that you have asked about this because of Strategy: project-per-target VS Strategy: null? 🤣

Where in the code does it determine that Strategy?

What could cause that to be null?

Hm, I just noticed that on the computer where it works I'm on VSC 1.86.2, and on the one where it doesn't I'm still on the older 1.85.1, due to ... internal work related reasons.

Let me try to double check if it reproduces with 1.86.2 on that computer...

Let me try to double check if it reproduces with 1.86.2 on that computer...

That doesn't seem to help.

Another difference between these 2 computers that I just found is that on the one where it works, bazel is a symlink to bazelisk, but on the one where it doesn't work it was only a shell alias. I've removed the alias now (so which bazel now shows the symlink), but it still doesn't work.

In fact, the Bazel Build Status is now even completely empty, not even showing Synchronization Summary at all, anymore. I cannot even get it to show that Synchronization Summary with the Strategy: null anymore!

So it probably fails to launch Bazel? Could we enable (or add, in code) better logging around that? Where in the code does it do that? Do you want to use (my!) https://github.com/vorburger/ch.vorburger.exec for fully logging the exec? 🤣

PS: I doubt #88 is solved. But that doesn't really matter here - whether it's launch bazel or bazelisk, if it fails to do so, it should clearly show that, and ideally perhaps print out the current PATH as well.

For what it's worth, in my #94 related experiments for enola-dev/enola#519 I've run into Strategy: null on GitHub Codespaces as well - but there I have always seen a java.io.IOException: Cannot run program "bazel" (in directory "/workspaces/enola"): error=2, No such file or directory (now solved).

Why on that one other computer it doesn't even show that is still a mystery to me.

guw commented

Can you check the JDTLS log file? Cmd+Shift+P > Java: Open Java Language Server Log File