2008-08-29 26 views
37

Có ai biết cách gỡ lỗi JSP trong IntelliJ IDEA?Gỡ lỗi JSP trong IntelliJ IDEA

Khi tôi đặt điểm ngắt trong các tệp JSP của mình, các điểm ngắt đó dường như không bao giờ có hiệu lực. Trình gỡ rối không bao giờ chạm vào chúng. IDEA dường như nghĩ rằng các điểm ngắt là hợp lệ. Tôi thấy một chấm đỏ được đặt ở bên trái của dòng nơi tôi đặt điểm ngắt.

Tôi đã đọc trong diễn đàn IntelliJ in this post rằng các tệp JSP cần phải nằm trong web-inf để gỡ lỗi để hoạt động.

Nhưng sau đó tôi cũng đọc rằng các tệp JSP được đặt trong web-inf sẽ không được người dùng truy cập trực tiếp.

Tôi không chắc ai thực sự đúng.

+0

Chỉ cần chọn - nó hoạt động cho tôi. IntelliJ 6.0.5 chạy Tomcat 5. JSP trong thư mục tài nguyên, không có gì đặc biệt. Bạn cần cung cấp thêm thông tin về cấu hình của mình. Hãy thử tạo một dự án đơn giản và thử nghiệm nó với các phiên bản Tomcat/bất kỳ phiên bản nào khác. – itsadok

+0

Nếu nhật thực: http: //codeinventions.blogspot.com/2014/08/how-to-debug-jsp-with-help-of-compiled.html –

Trả lời

0

Đối với phần thứ hai của câu hỏi của bạn ("tệp jsp được đặt trong web-inf sẽ không được người dùng truy cập trực tiếp") đúng. Để cho phép người dùng truy cập các tệp JSP trong các thư mục servlet và servlet-mapping của WEB-INF cần phải được thực hiện trong tệp web.xml cho mỗi trang JSP.

29

Để gỡ lỗi JSP trong Intellij có một số cấu hình phải theo thứ tự. Thực tế là Intellij luôn cho phép bạn thêm điểm ngắt trên dòng JSP không nhất thiết ngụ ý rằng bạn đã định cấu hình gỡ lỗi JSP. Trong phần sau tôi tham khảo cấu hình Intellij 8, w.r.t. các phiên bản trước, bạn sẽ cần phải thực hiện các thao tác tương tự vì các khái niệm giống nhau.

Để bật gỡ lỗi JSP, bạn phải thực hiện hai bước: đặt cấu hình ứng dụng web trong dự án của bạn và thêm cấu hình máy chủ ứng dụng web.

Cấu hình ứng dụng web: để gỡ lỗi JSP, bạn phải có một khía cạnh "web" trong cấu trúc dự án của mình, trỏ đến tệp web.xml chính xác. Tùy thuộc vào loại cấu trúc ứng dụng web bạn đang sử dụng, các khía cạnh có thể được phát hiện tự động bởi Intellij (đi anyway để kiểm tra những gì nó đã làm) hoặc bạn có thể phải thêm nó bằng tay. Hãy nhớ trong tab "Cài đặt xây dựng Java EE" để đặt làm an toàn "Tạo thư mục đã phát triển khía cạnh web"; nếu bạn không muốn sao chép, một mẹo chỉ là bật tính năng này và trỏ đến thư mục đã tồn tại của bạn.

(Web) Máy chủ ứng dụng: Chuyển đến “chỉnh sửa cấu hình”, ở đó bạn phải thêm vào cấu hình máy chủ ứng dụng, không khởi chạy máy chủ web dưới dạng ứng dụng như bất kỳ ứng dụng nào khác. Bằng cách này Intellij sẽ có thể chặn các cuộc gọi JSP. Trong danh sách các máy chủ ứng dụng, bạn nên có một máy chủ mặc định, Tomcat. Đảm bảo cài đặt Tomcat cục bộ trước khi bạn thực hiện việc này và trỏ đến điều đó khi thêm máy chủ ứng dụng web. Bí quyết cuối cùng là vào tab “Deployment” và chọn “Deployment source” cùng một khía cạnh mà bạn đã cấu hình trong bước trước.

Cấu hình tương tự hoạt động nếu bạn muốn sử dụng một máy chủ ứng dụng web khác, tôi đã thử nghiệm với phiên bản mới nhất của Caucho Resin và gỡ lỗi hoạt động tốt (không có sự kết hợp Intellij và Resin trước đó).

Nếu bạn không thấy Tomcat trong danh sách các máy chủ ứng dụng có sẵn để thêm, hãy kiểm tra các plugin trong khung cài đặt Intellij chung: trong các bản phát hành mới nhất, ngày càng nhiều chức năng trở nên “có thể cắm” và thậm chí rất cơ bản chức năng có thể bị tắt; plugin này được gọi là "tích hợp Tomcat".

Cuối cùng, chắc chắn không đúng là các tệp JSP cần phải nằm trong WEB-INF để được gỡ lỗi.

4

Dù sao, bạn cần khởi chạy Tomcat trong IDEA, không phải từ Tomcat từ xa.

+1

Cảm ơn gợi ý này! Tôi đã không thể gỡ lỗi khi tôi chạy một tomcat mvn: chạy. Khi tôi sử dụng một cấu hình chạy tomcat địa phương tôi đã có thể gỡ lỗi jsps. – Jay

18

Để gỡ lỗi JSP từ xa (cũng áp dụng cho localhost), bạn sẽ cần cài đặt JSR45support plugin.

  1. Đến Preferences>Plugins, tìm kiếm cho Plugin JSR45, và kích hoạt nó.
  2. Tạo một cấu hình chạy: Run>Run Cấu hình> nhấp vào nút +, và chọn JSR45 Tương thích máy chủ, và sau đó trong hộp thoại mở ra, chọn Từ xa và đặt máy chủ lưu trữ và cổng. Đặt Máy chủ ứng dụng:Chung sẽ hoạt động tốt.
  3. Hãy chắc chắn rằng bạn thiết lập đúng cổng trong Startup/Cấu hình>gỡ lỗi.

  4. mở các thiết lập mô-đun (F3 vào thư mục dự án), và thêm một Facet Web dưới khía cạnh, và dưới Thư mục Resource Web chỉ định thư mục JSP gốc của bạn.

  5. Nhấp vào Cấu hình ... nút, và chọn thư mục với các loại đậu, các lớp học và thư viện mà JSP của bạn phụ thuộc vào.

Bây giờ, điểm ngắt JSP sẽ hoạt động, miễn là bạn khởi động máy chủ với proper debug arguments khi khởi động máy chủ.

+0

Khởi động lại ý tưởng sau bước 1. Tính năng này chỉ khả dụng trong Idea Ultimate. –

0

Xin chắc chắn, rằng trong bạn của tomcat conf/web.xmlsuppressSmapkhông kích hoạt như hỗ trợ của JSR45 là yêu cầu của debugger IntelliJ của.

Nó sẽ giống như thế này:

<init-param> 
    <param-name>suppressSmap</param-name> 
    <param-value>false</param-value> 
</init-param> 

Từ https://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html

suppressSmap - nên việc tạo ra thông tin SMAP cho JSR45 gỡ lỗi bị đè nén? đúng hay sai, mặc định là sai.

0

Nếu bạn đang sử dụng trình gỡ lỗi Intellij, bạn có thể nhận giá trị của một thuộc tính riêng lẻ bằng cách đặt điểm ngắt bên trong JSP và đánh giá biểu thức this.jspContext.request.getAttribute("attributeName").

Lưu ý rằng điều này có thể trả về loại đối tượng Java và bạn có thể phải đưa loại đó vào đúng loại. Ngoài ra nếu bạn khởi chạy Tomcat từ xa, IDEA sẽ không nhấn bất kỳ điểm ngắt nào, vì vậy bạn cần khởi chạy Tomcat ở chế độ gỡ lỗi từ bên trong IDEA.