VSCode debugger for Java setup guide
The key steps in configuring a Java debugging environment on VSCode include: 1. Install JDK and verify; 2. Install Java Extension Pack and Debugger for Java plug-in; 3. Create and configure the launch.json file, specify mainClass and projectName; 4. Set up the correct project structure to ensure the source code path and compilation output are correct; 5. Use debugging techniques such as Watch, F8/F10/F11 shortcut keys and methods to deal with common problems such as class not found or JVM attachment failures.
Configuring a Java debugging environment is actually not difficult on VSCode, but it may be a bit trampled for beginners. The key is to match several core components: JDK, plug-in, launch.json file and project structure. As long as these parts are fine, debugging can run smoothly.

Install the JDK and VSCode plug-in
First of all, you have to confirm that you have installed JDK locally. It is recommended to use OpenJDK or Adoptium (formerly called AdoptOpenJDK). You can use the terminal to enter java -version
and javac -version
to verify whether the installation is successful.

Then open VSCode and install the following two plugins:
- Java Extension Pack : This is the basic set of Java development, including language support, project management, etc.
- Debugger for Java : This plugin is really used for debugging, and it will automatically generate some configuration files for you.
After these two plug-ins are installed, VSCode will have basic Java development and debugging capabilities.

Create launch.json configuration file
If you are debugging a Java project for the first time, VSCode may prompt you to create a launch.json
file when clicking on the "Run and Debug" sidebar. If it does not automatically pop up, you can manually click "Create launch.json file" and select "Launch Current File" or "Launch Program" in Java.
The core function of this file is to specify the startup class and JVM parameters. For example, you can write this:
{ "type": "java", "request": "launch", "name": "Debug (Launch) - Current File", "mainClass": "com.example.Main", "projectName": "your-project-name" }
Note two points:
- mainClass To write the full class name, including the package name.
- If you are a multi-module project, it is best to fill in projectName as well to avoid not finding the class.
Set up the correct project structure
VSCode has certain requirements for the structure of Java projects. Generally speaking, the source code should be placed in the src/main/java
directory, and there should be a .classpath
file or Maven/Gradle configuration file. If you are using a normal folder instead of a Maven/Gradle project, you may need to manually set the compiled output path.
FAQ:
- Class not found: Check whether build path and output folder are correct.
- An error "Source not found" was reported at startup: It may be that the class where the breakpoint is located was not compiled or loaded correctly.
The recommended approach is:
- Initialize the project structure using Maven or Gradle.
- Make sure that the compiled
.class
file is underbin
ortarget/classes
.
Common debugging operation skills
When debugging Java, in addition to adding breakpoints, there are some tips to improve efficiency:
- Right-click on the variable to select "Watch" to view the value changes in real time.
- Press F8 to quickly skip the current breakpoint, F10 is the stepping function, and F11 is the execution line by line.
- If the debugging is stuck, you can click the "Pause" button to see the current thread status.
Also, sometimes you will encounter "cannot attach to JVM", and you can try:
- Clean up the cache files in the .vscode directory.
- Restart VSCode and reload the Java plug-in (Ctrl Shift P enter "Reload Window").
Basically that's it. The whole process is not complicated, but it is easy to cause problems in details, especially when the path and class names are written incorrectly. As long as you take it step by step, it can usually be done.
The above is the detailed content of VSCode debugger for Java setup guide. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

UseaRESTAPItobridgePHPandMLmodelsbyrunningthemodelinPythonviaFlaskorFastAPIandcallingitfromPHPusingcURLorGuzzle.2.RunPythonscriptsdirectlyfromPHPusingexec()orshell_exec()forsimple,low-trafficusecases,thoughthisapproachhassecurityandperformancelimitat

Laravel supports the use of native SQL queries, but parameter binding should be preferred to ensure safety; 1. Use DB::select() to execute SELECT queries with parameter binding to prevent SQL injection; 2. Use DB::update() to perform UPDATE operations and return the number of rows affected; 3. Use DB::insert() to insert data; 4. Use DB::delete() to delete data; 5. Use DB::statement() to execute SQL statements without result sets such as CREATE, ALTER, etc.; 6. It is recommended to use whereRaw, selectRaw and other methods in QueryBuilder to combine native expressions to improve security

Responsive programming implements high concurrency, low latency non-blocking services in Java through ProjectReactor and SpringWebFlux. 1. ProjectReactor provides two core types: Mono and Flux, supports declarative processing of asynchronous data flows, and converts, filters and other operations through operator chains; 2. SpringWebFlux is built on Reactor, supports two programming models: annotation and functional. It runs on non-blocking servers such as Netty, and can efficiently handle a large number of concurrent connections; 3. Using WebFlux Reactor can improve the concurrency capability and resource utilization in I/O-intensive scenarios, and naturally supports SSE and WebSo.

JWT is an open standard for safe transmission of information. In Java, authentication and authorization can be achieved through the JJWT library. 1. Add JJWT API, Impl and Jackson dependencies; 2. Create JwtUtil tool class to generate, parse and verify tokens; 3. Write JwtFilter intercepts requests and verify BearerTokens in Authorization header; 4. Register Filter in SpringBoot to protect the specified path; 5. Provide a login interface to return JWT after verifying the user; 6. The protected interface obtains user identity and roles through parsing the token for access control, and ultimately realizes a stateless and extensible security mechanism, suitable for distributed systems.

Use JUnit5 and Mockito to effectively isolate dependencies for unit testing. 1. Create a mock object through @Mock, @InjectMocks inject the tested instance, @ExtendWith enables Mockito extension; 2. Use when().thenReturn() to define the simulation behavior, verify() to verify the number of method calls and parameters; 3. Can simulate exception scenarios and verify error handling; 4. Recommend constructor injection, avoid over-simulation, and maintain test atomicity; 5. Use assertAll() to merge assertions, and @Nested organizes the test scenarios to improve test maintainability and reliability.

Go generics are supported since 1.18 and are used to write generic code for type-safe. 1. The generic function PrintSlice[Tany](s[]T) can print slices of any type, such as []int or []string. 2. Through type constraint Number limits T to numeric types such as int and float, Sum[TNumber](slice[]T)T safe summation is realized. 3. The generic structure typeBox[Tany]struct{ValueT} can encapsulate any type value and be used with the NewBox[Tany](vT)*Box[T] constructor. 4. Add Set(vT) and Get()T methods to Box[T] without

table-layout:fixed will force the table column width to be determined by the cell width of the first row to avoid the content affecting the layout. 1. Set table-layout:fixed and specify the table width; 2. Set the specific column width ratio for the first row th/td; 3. Use white-space:nowrap, overflow:hidden and text-overflow:ellipsis to control text overflow; 4. Applicable to background management, data reports and other scenarios that require stable layout and high-performance rendering, which can effectively prevent layout jitter and improve rendering efficiency.

Choosetheappropriateindextypebasedonusecase,suchassinglefield,compound,multikey,text,geospatial,orTTLindexes.2.ApplytheESRrulewhencreatingcompoundindexesbyorderingfieldsasequality,sort,thenrange.3.Designindexestosupportcoveredqueriesbyincludingallque
