Cảm ơn bạn nhiều, nếu mà in đc Tiếng Việt trực tiếp trên VS Code thì tốt, nhưng mà được vậy là ổn rồi.
Chứ nếu test code liên tục mà cứ copy paste mấy cái lệnh thì hơi mệt xíu
Lỗi chữ tiếng Việt khi in ra bị "?" ở những chữ cái có dấu tiếng Việt
muốn code trên vscode thì install thêm cái plugin Maven for Java gì đấy rồi tạo project bằng Maven mà chạy :V
Install Apache Maven
https://maven.apache.org/download.cgi tải “Binary zip archive” rồi giải nén ra, để ở đâu đó ví dụ D:\Maven
. Giải nén xong cho D:\Maven\bin
vào PATH
để chạy lệnh mvn
trên terminal được.
Tạo project bằng Maven
làm theo tutorial của Maven chạy lỗi tùm lum :V mình thấy lệnh này chạy được:
mvn archetype:generate -DgroupId=main -DartifactId=002 -DinteractiveMode=false
nó sẽ tạo project mới có tên là 002
, có cấu trúc:
D:\PROG\JAVA\TEST\002
│ pom.xml
│
└───src
├───main
│ └───java
│ └───main
│ App.java
│
└───test
└───java
└───main
AppTest.java
nó tạo sẵn cái App.java
rồi thì khỏi xài ChuongTrinhDauTien.java
nữa vậy :V
cái AppTest kia nó tạo sẵn thì tốt, hiện giờ chưa xài thì kệ nó :V :V
Tạo VS Code workspace
vô thư mục 002
, tạo thư mục .vscode
rồi tạo file 002.code-workspace
trong đó:
D:\PROG\JAVA\TEST\002
│ pom.xml
│
├───.vscode
│ 002.code-workspace
│
...
nội dung của 002.code-workspace
là
{
"folders": [
{
"path": ".."
}
]
}
rồi double click mở file này lên bằng VS Code, chọn “Always open with this app” luôn, lần sau mở project chỉ cần double click vô file .code-workspace
này là được
Thêm encoding, dependency cho project
mở file pom.xml
, thêm jna dependency này vào:
<dependencies>
...
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.11.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
thêm encoding utf8 cho project:
<project ...>
...
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
nếu xài Java “cũ” 1.7 thì ko cần thêm cái compile source/target kia, ở đây mình lỡ install Java 17 nên phải có thêm 2 dòng này :V :V Tại vì compile bằng lệnh mvn compile
mặc định nó pass -source 1.5
và -target 1.5
vào javac
, mà Java 17 nó ko chịu 1.5 :V tối thiểu phải là 1.7 gì đấy, kệ quất 17 luôn =] Nếu viết project cho người khác compile thì nên để 1.7 được rồi :V
nội dung đầy đủ của file pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>main</groupId>
<artifactId>002</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>002</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.11.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
sửa xong file pom.xml
này thì mở PowerShell lên lại, cd tới thư mục root của project (D:\PROG\JAVA\TEST\002
) rồi chạy lệnh
mvn clean install
để nó update những thay đổi trong file pom.xml
Thêm file Console.java
thêm file console\windows\Console.java
trong thư mục src\main\java
, phải tạo thêm folder console\windows
cho đúng cái tên package console.windows
:V
D:\PROG\JAVA\TEST\002
│ pom.xml
│
├───.vscode
│ 002.code-workspace
│
└───src
├───main
│ └───java
│ ├───console
│ │ └───windows
│ │ Console.java
│ │
│ └───main
│ App.java
│
└───test
└───java
└───main
AppTest.java
nội dung Console.java
(vẫn như cũ, chỉ có sửa tên hàm println
lại thành WriteLine
:V :V
package console.windows;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.StdCallLibrary;
/**
* For unicode output on windows platform
*
* @author Sandy_Yin
*
*/
public class Console {
private static Kernel32 INSTANCE = null;
public interface Kernel32 extends StdCallLibrary {
public Pointer GetStdHandle(int nStdHandle);
public boolean WriteConsoleW(Pointer hConsoleOutput, char[] lpBuffer,
int nNumberOfCharsToWrite,
IntByReference lpNumberOfCharsWritten, Pointer lpReserved);
}
static {
String os = System.getProperty("os.name").toLowerCase();
if (os.startsWith("win")) {
INSTANCE = (Kernel32) Native.load("kernel32", Kernel32.class);
}
}
public static void WriteLine(String message) {
boolean successful = false;
if (INSTANCE != null) {
Pointer handle = INSTANCE.GetStdHandle(-11);
char[] buffer = message.toCharArray();
IntByReference lpNumberOfCharsWritten = new IntByReference();
successful = INSTANCE.WriteConsoleW(handle, buffer, buffer.length, lpNumberOfCharsWritten, null);
if (successful)
System.out.println();
}
if (!successful)
System.out.println(message);
}
}
Run | Debug
nội dung file App.java
:
package main;
import console.windows.*;
public class App {
public static void main(String[] args) {
Console.WriteLine("Xin chào các bạn!");
Console.WriteLine("Xin chào mọi người!");
}
}
bấm F5 là debug ngon lành ko cần thêm gì cả :V
hay click vô Run | Debug gì ở ngay hàm main cũng được :V
help, nó lại bị lỗi tiếp này :vv
https://imgur.com/a/t1DAn0d
Nó còn nói hai cái file đó non-project gì nữa đó :v
Mong bạn giúp
à quên sửa file pom.xml
xong thì phải ra ngoài gõ mvn clean install
lại nữa :V
cd tới thư mục của project (D:\PROG\JAVA\TEST\002
), gõ mvn clean install
là được :V để thêm vô cái hướng dẫn kia :V :V
nó bị lỗi Console cannot be resolved gì đó á bạn (lỗi tiếp)
vô daynhauhoc’s discord đi sửa lỗi lẹ hơn :V rồi post solution vô đây, ở đây cứ 1 ngày sửa 1 lỗi lâu quá :V
update có hình :V
mở powershell, gõ lệnh
mvn archetype:generate -DgroupId=main -DartifactId=004 -DinteractiveMode=false
ở đây 004
là tên project
tiếp theo tạo code-workspace:
cd 004
md .vscode
New-Item .vscode\004.code-workspace -ItemType File -Value '{"folders":[{"path": ".."}]}'
code .vscode\004.code-workspace
mở vscode lên rồi thì tắt powershell ở ngoài đi, xài powershell ở trong vscode :V
mở file App.java
lên, xem có thấy dòng Run|Debug
kia ko
nếu ko thì install 3 cái extensions này:
thấy Run|Debug
rồi thì bấm vào Run chạy cho nó in ra Hello World
chạy được rồi thì mở file pom.xml
lên để thêm encoding, jna dependency vào :V
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>main</groupId>
<artifactId>004</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>004</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.11.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
save lại thì sẽ thấy vscode nó hiện lên thông báo có muốn sync config mới ko, bấm Now hoặc Always là nó tự động config lại cho mình, khỏi cần gõ mvn clean install
nếu thấy có dòng
thì sửa lại compiler source và target cho đúng version của Java compiler, ở đây là
17
thay vì 1.7
:Vqua tab Terminal của vscode, tạo file Console.java
:
md src/main/java/console/windows
New-Item src/main/java/console/windows/Console.java -ItemType File
copy nội dung file Console.java
và App.java
ở trên vào rồi chạy là được