Làm cách nào để chạy mã scala đã biên dịch trên jvm?Làm thế nào để chạy mã bytecode scala trên jvm?
Khi tôi cố gắng lệnh sau:
java -cp scala-library.jar -cp bin com.mcmc5.Main
tôi nhận được lỗi sau: Exception in thread "main" java.lang.NoSuchMethodError: main
Trong mã scala, tôi có một đối tượng được gọi là chính và nó có các chức năng chính được xác định trong đó. Nó hoạt động nếu tôi làm scala -cp bin com.mcmc5.Main
, nó hoạt động tốt.
Có điều gì đó mà tôi bị thiếu không?
Cảm ơn bạn, thejinx0r
Edit1: Dưới đây là mã của tôi: Lý do tại sao tôi muốn nó chạy trên JVM là vì máy chủ nơi mà tôi muốn thực sự thực hiện bytecode không có scala Cài đặt. Đây là những gì chính tôi đã cơ bản (nó có một số giá trị và các biến được xác định trước đó, nhưng về cơ bản:.
package com.mcmc5
import java.text.{DateFormat, NumberFormat, DecimalFormat, SimpleDateFormat}
import java.util.{Date}
object Main { def main(args: Array[String]) = {
println(numberOfOutputStructures)
var structureSolver = new MC(20);
structureSolver.start()
}
}
Nhưng tôi vẫn cố gắng sử dụng java -cp scala-library.jar:bin com.mcmc5.Main
và tôi vẫn có những lỗi tương
Chỉnh sửa 2 vấn đề giải quyết.
vì vậy, tôi thực sự không tin điều này, nhưng hoạt động này đối với tôi.
vì vậy, tôi đã tìm thấy một thread (nếu bạn có thể gọi nó) và nói rằng java thường không thích toàn bộ object Main extends Application
Nhưng, điều đó thực sự đã giải quyết được vấn đề của tôi. Bằng cách sử dụng extends Application
thay vì xác định một hàm được gọi là chính đã giải quyết được sự cố của tôi. Tôi đoán nó phụ thuộc vào phiên bản của scala bạn đang sử dụng. Tôi hiện đang trên scala 2.9, rc2 có lẽ? hoặc rc1?
sẽ rất thú vị khi xem mã của bạn để giúp bạn – axaluss
Như Ernest đã đề cập: Chỉ tùy chọn -cp cuối cùng mới được sử dụng. Không chỉ định hai! – ziggystar
Với dòng lệnh 'scala -cp bin com.mcmc5.Main', bạn đã chạy mã Scala của bạn trên JVM. Tại sao bạn muốn làm điều đó một cách rõ ràng bằng cách sử dụng lệnh 'java'? – Jesper