How to: Remove "Java Update Scheduler has stopped working" on Windows server 2022
Run regedit, navigate to Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
then remove the line that contains "jusched.exe".
Run regedit, navigate to Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
then remove the line that contains "jusched.exe".
To make DOSBox automatically mount your ~/games folder as the C: drive every time it starts, you can edit the DOSBox configuration file. Here's how to set it up:
Locate your DOSBox configuration file:
C:\Users\YourUsername\AppData\Local\DOSBox\dosbox-[version].conf.~/.dosbox/dosbox-[version].conf.Edit the configuration file:
Open the dosbox-[version].conf file with a text editor (e.g., Notepad on Windows or nano on Linux/macOS).
Find the [autoexec] section:
Scroll down to the very end of the file until you find the [autoexec] section. This is where you can add commands that DOSBox will execute when it starts.
Add the mount command:
Add the following line to mount your ~/games folder as the C: drive:
On Linux/macOS, add:
mount c ~/games
On Windows, if you want to mount a specific folder, use the path like this (assuming your folder is in C:\Users\YourUsername\games):
mount c C:\Users\YourUsername\games
You can also specify different mount points or add other commands, but this one will mount your ~/games directory automatically as C:.
Save the file: After adding the mount command, save the configuration file and close the text editor.
Start DOSBox:
Now, every time you start DOSBox, it will automatically mount the ~/games folder as the C: drive.
Here’s what the [autoexec] section could look like:
[autoexec]
# Lines in this section will be run at startup.
mount c ~/games
c:
If you need any more help with configuration, let me know!
Check which process holds the port:
netstat -ano | findstr :<port>
Find the process name:
tasklist | findstr <PID>
Kill it:
taskkill //PID <PID> //F
Run as Administrator if access is denied. If the port stays stuck, reboot or disable conflicting drivers/services.
Install zoxide If you use Scoop:
scoop install zoxide
Or place the binary in a custom directory, e.g. C:\Users\David.Wei\bin.
Add zoxide to PATH (if not already)
[Environment]::SetEnvironmentVariable(
"Path",
$env:Path + ";C:\Users\David.Wei\bin",
"User"
)
Initialize zoxide in PowerShell profile Find or create your profile:
New-Item -ItemType File -Path $PROFILE -Force
Edit it and add:
Invoke-Expression (& { (zoxide init powershell --cmd j | Out-String) })
Restart PowerShell
Use j <dir> to jump quickly between directories.
That’s all.
Date: September 2, 2025 Context: Investigation and resolution of test failures on Git Bash/Windows
We encountered widespread test failures when running the eed test suite on Git Bash/Windows, while all tests passed on Linux. Through systematic investigation, we discovered multiple platform-specific issues with bats test framework and developed comprehensive solutions. This document captures the technical journey, root causes, and proven solutions for future reference.
test_eed_logging.bats, test_eed_preview.bats, test_eed_single_param.bats, test_eed_stdin.bats# This pattern consistently failed on Git Bash:
run bash -c "printf '1d\nw\nq\n' | $SCRIPT_UNDER_TEST --force test.txt -"
# Status: 127 (Command not found)
# Error: bash -c printf '1d\nw\nq\n' | /path/to/eed --force test.txt -
Issue: eed_common.sh was using EED_REGEX_INPUT_MODE without sourcing eed_regex_patterns.sh
Symptoms:
Fix:
# Added to eed_common.sh
source "$(dirname "${BASH_SOURCE[0]}")/eed_regex_patterns.sh"
Issue: Bats implements pipe simulation differently on Windows vs Linux
Technical Details:
run bash -c "command | other" becomes bash -c command | otherSymptoms:
# What we wrote:
run bash -c "printf '1d\nw\nq\n' | $SCRIPT_UNDER_TEST --force test.txt -"
# What actually executed:
bash -c printf '1d\nw\nq\n' | /path/to/eed --force test.txt -
# ^^^^^^^^^^^^^^^^^^ Only this part in bash -c
# ^^^^^^^^^^^^^^^^^^^^^^^^^ This runs outside bats
Issue: stat output includes microsecond-precision access times that change on every file read
Technical Details:
stat output including access timesBefore:
original_stat="$(stat sample.txt)"
# ... test runs ...
[[ "$(stat sample.txt)" == "$original_stat" ]] # Always fails due to access time
Issue: Git Bash regex handling differences in substitute command detection
Technical Details:
s(.)[^\\]*\1.*\1([0-9gp]+)?$[^\\]* excluded characters needed for patterns like console\.log# In lib/eed_common.sh - added missing source
source "$(dirname "${BASH_SOURCE[0]}")/eed_regex_patterns.sh"
# Before (fails on Git Bash):
run bash -c "printf '1c\nchanged\n.\nw\nq\n' | $SCRIPT_UNDER_TEST --force test.txt -"
# After (works everywhere):
run "$SCRIPT_UNDER_TEST" --force test.txt - << 'EOF'
1c
changed
.
w
q
EOF
# Before (fails on Git Bash):
run bash -c "echo '$script' | '$SCRIPT_UNDER_TEST' --force '$TEST_FILE' -"
# After (works everywhere):
run bash -c 'set -o pipefail; echo "$1" | "$2" --force "$3" -' \
bash "$script" "$SCRIPT_UNDER_TEST" "$TEST_FILE"
Key Elements:
set -o pipefail for proper error propagation"$1", "$2") to avoid quoting hell# Before (fails due to access time changes):
original_stat="$(stat sample.txt)"
[[ "$(stat sample.txt)" == "$original_stat" ]]
# After (only check relevant attributes):
original_size="$(stat -c %s sample.txt)"
original_mtime="$(stat -c %Y sample.txt)"
original_inode="$(stat -c %i sample.txt)"
[[ "$(stat -c %s sample.txt)" == "$original_size" ]] # Size unchanged
[[ "$(stat -c %Y sample.txt)" == "$original_mtime" ]] # Modify time unchanged
[[ "$(stat -c %i sample.txt)" == "$original_inode" ]] # Inode unchanged
# Before (too restrictive):
fallback='s(.)[^\\]*\1.*\1([0-9gp]+)?$'
# After (handles escaped characters properly):
fallback='s([^[:space:]]).*\1.*\1([0-9gp]*)?$'
We created tests/test_printf_pipeline.bats to validate our understanding:
bats -x for detailed execution tracespython3 for JSON validation)run "$COMMAND" file.txt - << 'EOF'
multiline
script
content
EOF
run bash -c 'set -o pipefail; echo "$1" | "$2" --flags "$3"' \
bash "$input" "$command" "$target"
run bash -c "printf '...' | command ..." # Breaks on Git Bash
[[ "$(stat file.txt)" == "$original_stat" ]] # Access time changes
lib/eed_common.sh: Added missing regex patterns sourcelib/eed_regex_patterns.sh: Improved substitute regex fallbacktests/test_eed_single_param.bats: Printf pipeline → heredoctests/test_eed_stdin.bats: Printf pipeline → heredoc + GPT patterntests/test_safety_override_integration.bats: All patterns → GPT approachtests/test_ai_file_lifecycle.bats: Removed python3 dependencytests/test_eed_preview.bats: Fixed stat comparison + separated safety teststests/test_printf_pipeline.bats: Comprehensive pipeline pattern validationbats -x to see exact command executionThis investigation demonstrates the importance of thorough cross-platform testing and systematic root cause analysis. The solutions we implemented not only fixed immediate issues but established robust patterns for future development.
Key Takeaway: When tools behave differently across platforms, the solution isn't to work around the differences, but to understand them deeply and adopt patterns that work reliably everywhere.