2011-08-03 11 views
6

Tôi đang gặp một số vấn đề khá khó chịu với scala. Vấn đề là, tôi có thể biên dịch dự án scala nhỏ một cách hoàn hảo, nhưng khi các dự án lớn hơn, trình biên dịch bị treo với một StackOverflowException. Rõ ràng, tôi phải tăng kích thước ngăn xếp cho trình biên dịch, tuy nhiên, đó có lẽ là vấn đề chính của tôi ở đây, tôi không biết làm thế nào.netbeans 7.0 và kết quả scala trong stackoverflow

tôi bắt đầu netbeans với các thông số:

netbeans_default_options="-J-client -J-Xmx512m -J-Xss8m -J-Xms512m -J-XX:PermSize=128m -J-XX:MaxPermSize=512m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true" 

Vì vậy, theo như tôi biết, -J-Xss8m nên tăng kích thước thread stack đến 8 mb. Tuy nhiên, điều đó dường như không ảnh hưởng đến trình biên dịch. Vì vậy, tôi đã cố gắng để vượt qua các thông số tương tự để trình biên dịch trực tiếp, sử dụng cờ biên dịch, mà tôi có thể thiết lập trong NetBeans, kết quả này:

-deprecation -J-Xss8m 

Nhưng một lần nữa, điều đó không giúp đỡ, tôi vẫn nhận được sự ngoại lệ. Tôi tìm kiếm thông qua tài liệu netbeans, nhưng tất cả những gì tôi tìm thấy là các tham số khởi động netbeans mà tôi đã thiết lập. Tôi hy vọng ai đó ở đây có thể cung cấp cho tôi thêm thông tin về cách xử lý vấn đề này.

Thông tin khác: Vì vậy, sau một ngày tôi cuối cùng đã có cơ hội thử mọi thứ trên một máy khác. Tôi đã sử dụng cùng một cài đặt và trình biên dịch tương tự, nhưng với sự ngạc nhiên của tôi, tôi đã không nhận được kết quả tương tự. Có nghĩa là, trên máy tính của mình trình biên dịch biên dịch toàn bộ mã mà không có bất kỳ ngoại lệ. Sự khác biệt duy nhất giữa máy tính của tôi và của anh là, rằng anh có nhiều RAM và sức mạnh CPU hơn, nhưng điều đó không nên thực hiện thỏa thuận vì cả hai chúng tôi đều sử dụng netbeans với cùng các tùy chọn khởi động.

Bây giờ, tôi thậm chí đã thử RC của trình biên dịch Scala 2.9, nó không giúp ích gì nhiều. Ngoài ra, tôi đã kiểm tra xem tôi đã cài đặt đúng plugin scala chưa, vì có thể có vấn đề khi sử dụng plugin 2.8 với trình biên dịch 2.9 và ngược lại. Tuy nhiên, tôi đang sử dụng trình biên dịch 2.9 và trình biên dịch 2.9, vì vậy đó là tốt.

+0

Tôi thỉnh thoảng nhìn thấy cùng một dấu vết ngăn xếp vài lần. Tôi nghĩ rằng, nó không liên quan đến NetBeans, và trong trường hợp của tôi, nó chủ yếu được gây ra với các lỗi mức loại mà trình biên dịch không thể nhận ra/xử lý chính xác –

+0

Cảm ơn câu trả lời của bạn, cuối cùng tôi đã có thể kiểm tra tất cả máy khác nhau của một người bạn. Trước sự ngạc nhiên của tôi, mọi thứ hoạt động tốt trên máy của anh ấy, mặc dù không có sự khác biệt. Chúng tôi sử dụng cùng một trình biên dịch, cùng một IDE ngay cả cùng một hệ điều hành. Tôi sẽ nối thêm thông tin về bài viết mở đầu của tôi ... – Shelling

Trả lời

3

Vấn đề đưa ra trình biên dịch Scala không gian ngăn xếp nhiều hơn tương tự như xác định thêm không gian vùng nhớ. Cả hai tùy chọn này phải được chỉ định làm đối số JVM tùy chỉnh khi chạy trình biên dịch Scala. Tuy nhiên Netbeans thiếu bất kỳ loại tài liệu hướng dẫn về cách thực hiện nó, vì vậy ở đây nó được.

Cách để chỉ định đối số JVM tùy chỉnh cho trình biên dịch Scala với Netbeans là tùy chỉnh build.xml cho từng dự án.

  1. Mở nbproject/build-impl.xml trong thư mục của dự án.
  2. Tìm kiếm "scalac" và bạn sẽ tìm thấy mục tiêu sau: -init-macrodef-scalac.
  3. Sao chép toàn bộ định nghĩa mục tiêu, dán nó vào build.xml và lưu nó.
  4. Đóng nbproject/build-impl.xml, từ bây giờ bạn sẽ làm việc với build.xml.
  5. Trong mục tiêu bạn vừa sao chép, hãy tìm thẻ <scalac>, lồng nhau sẽ như sau: target.macrodef.sequential.scalac
  6. Thêm một tùy chỉnh "jvmargs" thuộc tính cho thẻ scalac, nó sẽ trông như sau: < jvmargs scalac = "- Xss2048k -Xmx2000m" ... >
  7. Save the build.xml. Bây giờ bất cứ khi nào bạn biên dịch dự án của bạn với netbeans, trình biên dịch sẽ được chạy với các đối số jvm tùy chỉnh.
+0

cuối cùng tôi đã đến để thay đổi các thiết lập, nhờ sự giúp đỡ của bạn :) – Shelling