bazelbuild / bazelbuild/rules_java

Windows: statically link msvcrt into Java Tools

Open
#316 0 comments 2 reactions 0 assignees View on GitHub
P4
Dominant language
Starlark
Stars
103
Forks
102
PR merge metrics
No merged PRs in 30d

Description

Hi!

On Windows, the prebuilt tools in `remote_java_tools_windows` require the Microsoft VC++ Redistributable, for example:
```
external\rules_java++toolchains+remote_java_tools_windows\java_tools\ijar\ijar.exe
external\rules_java++toolchains+remote_java_tools_windows\java_tools\src\tools\singlejar\singlejar_local.exe
external\rules_java++toolchains+remote_java_tools_windows\java_tools\turbine_direct_graal.exe
```

Without the redist installed, these fail due to missing `msvcp140.dll`, `vcruntime140.dll`, `vcruntime140_1.dll` (exit code `-1073741515`).

Would it be possible link the MSVC runtime statically (i.e., `--features=static_link_msvcrt`) for these binaries, or ship the required VC++ runtime DLLs app‑local alongside the executables?

Related issue: https://github.com/bazelbuild/bazel/issues/8328.

Contributor guide

Open the contributing guide

Research direction

Start by examining how the Windows binaries under remote_java_tools_windows are produced, especially ijar.exe, singlejar_local.exe, and turbine_direct_graal.exe. Reproduce the failure on a Windows machine without the Microsoft VC++ Redistributable, then verify that the chosen packaging or linking change lets all three tools run without those missing DLLs.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.