2010-12-15 9 views
18

Tôi có thể đang làm điều gì đó ngu ngốc, nhưng tôi không thể phát hiện ra nó.Trộn các tệp Scala và Java trong một dự án Eclipse

Tôi đã cài đặt Eclipse Helios (Helios vì tôi không thể nhận được hỗ trợ Glassfish để làm việc một cách chính xác bằng Gallileo) và xây dựng hàng đêm của các plugin Scala Eclipse cho Helios

tôi đã tạo ra một dự án Scala và bổ sung một số tệp - kết hợp giữa Java và Scala.

Tất cả đều có vẻ chính xác về cú pháp - trình soạn thảo Eclipse ít nhất dường như biết ngôn ngữ của mỗi tệp và báo cáo chính xác về lỗi cú pháp khi tôi tạo chúng - nhưng các tệp Java không thể tìm thấy các lớp được tạo trong Scala. Các trang web IDE dường như đề nghị này nên tất cả chỉ hoạt động.

Không có tệp lớp nào trong thư mục bin cho bất kỳ tệp Scala nào (có các tệp lớp cho từng lớp được xác định bởi tệp Java) vì vậy có vẻ như vì một số lý do tệp Scala không được xây dựng . Các tệp lớp bị thiếu này sẽ giải thích tại sao các tệp Java không thấy các lớp.

Tôi đã bỏ lỡ điều gì? Làm thế nào để tôi nói với Eclipse để xây dựng các tệp đó?

+0

Chỉ trong trường hợp, kiểm tra các nhà xây dựng trong cửa sổ thuộc tính của dự án và đảm bảo rằng Scala được chọn. – pedrofurla

+0

Một dự đoán hoang dã khác, sử dụng các thư mục nguồn khác nhau. Một cho Scala và một cho Java, không bao giờ có bất kỳ vấn đề làm như thế. – pedrofurla

+0

Cảm ơn. Kiểm tra rằng trình xây dựng Scala đã được chọn và di chuyển các tệp Java vào một thư mục khác. Không giúp gì được: ( –

Trả lời

8

Tôi cũng đang sử dụng Helios (vì tôi đã sử dụng 64 bit) và thấy plugin hoạt động hơi lạ một chút (mặc dù không phải là trung thực không khác nhiều so với trong Galileo). Khi trộn Java và Scala, như bạn thấy, nó sẽ giống như không có vấn đề gì, nhưng sẽ không có mã được biên dịch. Hoặc tệ hơn một lớp Java phụ thuộc vào một lớp Scala sẽ không biên dịch vì lớp Scala không được biên dịch - nhưng nó sẽ không biên dịch cho đến khi tất cả các lỗi đã biến mất khỏi dự án, tất nhiên sẽ không xảy ra cho đến khi nó biên dịch ... ug.

Tôi bắt đầu mày mò với các tệp lớp và tệp dự án, và cuối cùng làm cho nó hoạt động, mặc dù tôi thực sự không thể nói tại sao. Tôi thề tôi đã thay đổi một tập tin, sau đó thay đổi nó trở lại, và sau đó nó làm việc ??

Dù sao, đây là tác phẩm của tôi:

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
    <name>xxxxxxxxxxxxx</name> 
    <comment></comment> 
    <projects> 
    </projects> 
    <buildSpec> 
    <buildCommand> 
     <name>org.scala-ide.sdt.core.scalabuilder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
</buildSpec> 
<natures> 
    <nature>org.eclipse.jdt.core.javanature</nature> 
    <nature>org.scala-ide.sdt.core.scalanature</nature> 
</natures> 
</projectDescription> 

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
<classpathentry kind="src" path="src"/> 
<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/> 
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> 
<classpathentry kind="output" path="bin"/> 
</classpath> 

Điều quan trọng dường như được SCALA_CONTAINER mà đến trước JRE_CONTAINER, nhưng ... Tôi sẽ không đặt cược vào nó hoặc . Thứ tự của "bản chất" cũng có thể là quan trọng.

Nó được làm việc cho tôi ngay bây giờ cho một hoặc hai tuần, với bản cập nhật hàng ngày, vì vậy ... * ngón tay-vượt *

+0

Ok, đã thử điều đó. Dự án là giống hệt nhau, các đường dẫn khá khác nhau vì vậy tôi đã thay đổi .classpath đến một trong những bạn đã ở trên và ... không có sự khác biệt. Tôi đã xóa các dự án, reimported các tập tin vv nhưng nó không hoạt động: ( –

+0

Mistakethe bản chất của tôi đã được theo thứ tự khác.Thật không may thay đổi mà vẫn không làm bất cứ điều gì. Nó vẫn không xây dựng bất kỳ lớp fie –

+0

Tôi không thể nghĩ Không có vẻ gì có thể áp dụng trong .settings ... oh, tôi đang sử dụng Java 1.5 trên dự án này, nếu điều đó quan trọng (đặc biệt là 1.5.0_22) Bản thân Eclipse đang chạy trong 1.6. –

7

tôi đã nhận thấy rằng Eclipse IDE đôi khi không biên dịch file Scala của tôi khi Tôi tạo một tập tin mới. Tôi phải chọn dự án trong Package Explorer và làm mới nó (F5). Ngoài ra, bạn có thể thay đổi thứ tự biên soạn (Java đầu tiên so với Scala đầu tiên) trong Eclipse bằng cách vào:

Window-> Preferences-> Scala-> Compiler-> Xây dựng Manager-> compileorder

+1

Xin chào Steve, tôi đang sử dụng m2e, bạn có biết cách thay đổi thứ tự biên dịch trong pom không, tôi chỉ có thể xem tùy chọn biên dịch-đầu tiên http://davidb.github.io/scala- maven-plugin/example_java.html – ZiglioUK