2011-01-26 22 views
11

Trong Eclipse, khi bạn chỉ định đối số trong hộp thoại chạy, Eclipse diễn giải ${foo} làm yêu cầu sử dụng biến Eclipse foo. Tôi muốn vượt qua một chuỗi để ứng dụng của tôi có chứa ${foo} nhưng Eclipse xử lý này như là một biến không xác định và cho tôi một lỗi.

-Dfoo "bar" --pattern "regex magic ${foo}" 

Eclipse không chấp nhận dấu nháy đơn (') làm ký tự trích dẫn, thay vào đó nó trở thành một phần của đầu vào. Có ai biết làm thế nào tôi có thể thoát khỏi ${foo} trong hộp thoại này để nó được hiểu là văn bản và không phải là một tham chiếu biến?

+0

Các bạn đã thử điều hướng đến tab "Môi trường" trong Run Configurations cửa sổ và sau đó nhấn "Chọn" và chọn biến môi trường? – jluzwick

+0

Tôi không muốn đặt biến, tôi muốn thoát khỏi văn bản để Eclipse chuyển nó thành chuỗi thay vì thay thế bằng nội dung "biến". Nó có thể làm việc để thiết lập biến $ {foo} thành "$ {foo}" tuy nhiên ... – schmmd

+0

Tôi đang tìm một câu trả lời mà thoát $ {foo} khi nó ở trong dấu ngoặc kép. – schmmd

Trả lời

5

Bạn phải xác định một biến trong Eclipse: name = đô la, value = $

(Điều này có thể được thực hiện trong hộp thoại "cấu hình chạy", khi bạn gõ lập luận của bạn, bấm vào nút "biến ... ", sau đó nhấp vào" Chỉnh sửa biến ... "và thêm biến đó).

Sau đó, trong các đối số văn bản hộp, gõ $ {đôla} "{foo}"

14

$ {foo} tự nó có thể được thoát bằng $ "{foo}".

Khi $ {foo} đã là một phần của chuỗi được trích dẫn gấp đôi, như trong câu hỏi của bạn, tôi không chắc chắn cách thức hoặc nếu nó có thể được thoát.

+0

hoạt động giống như nét duyên dáng trên linux và cửa sổ – ctron

+0

Điều này phù hợp với tôi. Tôi đã tạo một cấu hình chạy cho maven và tôi có thể thêm vào đó: 'exec.workdir -> target/$" project.build.finalName "' trong danh sách đối số. Nhưng tôi không thể sử dụng cùng cú pháp trong trường "Thư mục cơ sở". – Coyotwill

7

Tôi không nghĩ có cách nào để làm điều này trong Eclipse.

Bit vi phạm mã là org.eclipse.core.internal.variables.StringSubstitutionEngine#substitute.

Đây là đoạn mã thay thế $ {foo} bằng bất kỳ thứ gì bạn đã xác định. Thật không may, nó có thể đối phó với các biến lồng nhau và nối, vì vậy nếu dollar = "$" và rest = "{foo}" thì $ {dollar} $ {rest} cho $ {foo} được đánh giá lại.

Để biết thông tin, trong báo cáo mãUndefinedVariables được mã hóa cứng là đúng hơn nữa lên ngăn xếp, đó là lý do bạn nhận được thông báo lỗi. Dường như không có cách nào thay đổi nó.

Các vấn đề liên quan