Tôi mới sử dụng Java và tôi đã tìm kiếm các giải pháp trên web nhưng không có cách nào hoạt động. Làm ơn giúp tôi.Nhập lớp Java tùy chỉnh
Tôi có hai tệp. Một trong số đó là tệp java chứa hàm chính. Trong đó:
...
VaporVisitor visitor = new VaporVisitor();
...
Với lệnh đó, tôi muốn tạo một đối tượng mới VaporVisitor
, mà là một lớp trong một tập tin riêng biệt gọi là VaporVisitor.java
. Tuy nhiên Java không nhận ra những gì VaporVisitor được, có lẽ vì nó không biết VaporVisitor.java
tồn tại (nó trong cùng một thư mục). Tôi đã cố gắng biến chúng thành một phần của cùng một gói, trong các gói khác nhau và nhập khẩu ... và tất cả chúng đều thất bại. Bất cứ ai có thể cho tôi bất kỳ hướng dẫn?
Cảm ơn!
EDIT: Dưới đây là chính xác những gì tôi đang làm và thông báo lỗi tôi nhận được: Vì vậy, tôi có 3 tệp. V2VM (với chức năng chính của tôi), VaporVisitor và một tệp jar được cung cấp có một số lớp tùy chỉnh. Tệp jar không cho tôi bất kỳ vấn đề gì; nó đang cố gắng để có được java để nhận ra VaporVisitor.
Vì vậy, trong V2VM (chức năng chính), tôi đã thử đưa vào: import V2VM.java;
không hoạt động. Tôi đã thử đặt V2VM trong một thư mục con được gọi là vv, thêm package vv;
vào VaporVisitor và đưa vào V2VM.java import vv.*
nhưng điều đó không hoạt động.
Đối với biên dịch, tôi đã cố gắng javac -classpath [the jar file].jar V2VM.java
Các lỗi nó mang lại cho tôi:
V2VM.java:15: cannot find symbol
symbol : class VaporVisitor
location: class V2VM
VaporVisitor visitor = new VaporVisitor();
^
V2VM.java:15: cannot find symbol
symbol : class VaporVisitor
location: class V2VM
VaporVisitor visitor = new VaporVisitor();
^
Khi tôi chạy javacc
Tôi đang ở cùng thư mục với V2VM, đó cũng là nơi hai tập tin khác được đặt . Tôi đã thử đặt V2VM và VaporVisitor trong cùng một gói, nhưng điều đó đã không làm việc hoặc. Vì vậy, họ không phải là một phần của bất kỳ gói bây giờ ...
EDIT 2: MÃ NGUỒN CÁC VaporVisitor và V2VM
V2VM.java:
package vv; //whether I put this or not, it doesn't work
//this stuff was provided, and is related to importing contents of the jar file; don't think this is the problem
import cs132.util.ProblemException;
import cs132.vapor.parser.VaporParser;
import cs132.vapor.ast.VaporProgram;
import cs132.vapor.ast.VBuiltIn.Op;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintStream;
import vv.VaporVisitor; //whether I put this or not, it doesn't work
public class V2VM{
public static void main(String [] args){
VaporProgram vp = parseVapor(System.in, System.err);
VaporVisitor visitor = new VaporVisitor();
for(int i=0; i<vp.functions.length; i++){
for(int j=0; j<vp.functions[i].body.length; j++){
vp.functions[i].body[j].accept(parameter, visitor);
}
}
}
public static VaporProgram parseVapor(InputStream in, PrintStream err){
...
}
Đối VaporVisitor.java:
package vv;
public class VaporVisitor extends VInstr.VisitorPR<Parameter_Type, Return_Type, RuntimeException>{
....
}
Tất cả 3 tệp nằm trong cùng một thư mục vv
Bạn đang biên soạn như thế nào? (Một IDE thường sẽ sắp xếp tất cả điều này ra cho bạn, ví dụ.) –
Làm thế nào để bạn biên dịch các lớp đó. Hiển thị cho chúng tôi các thư mục mà các tệp được đặt, thư mục bạn đang ở đâu và lệnh được sử dụng để biên dịch các tệp. Dán thông báo lỗi chính xác mà bạn có. Hãy cho chúng tôi biết gói nào là các lớp học. –
Tôi đang sử dụng thiết bị đầu cuối và chỉ chạy 'javac'. Thật tuyệt vời nếu tôi có thể hiểu những gì tôi nên làm thay vì dựa vào IDE nếu có thể – pauliwago