SORU
30 NİSAN 2009, PERŞEMBE


Bir kavanoz oluşturmak Scala bir dosyadan

Scala yeniyim ve Java bilmiyorum. Basit Scala bir dosya jar dosyası oluşturmak istiyorum. Benim Hello world var.scala, bir helloworld.jar oluşturur.

Apaçık.mf:

Main-Class: HelloWorld

Ben konsolu çalıştırın:

fsc HelloWorld.scala
jar -cvfm HelloWorld.jar Manifest.mf HelloWorld\$.class HelloWorld.class
java -jar HelloWorld.jar 
  => "Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/jar"

java -cp HelloWorld.jar HelloWorld 
  => Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
    at hoppity.main(HelloWorld.scala)

CEVAP
30 NİSAN 2009, PERŞEMBE


Örnek dizin yapısı:

X:\scala\bin
X:\scala\build.bat
X:\scala\MANIFEST.MF
X:\scala\src
X:\scala\src\foo
X:\scala\src\foo\HelloWorld.scala

Hello world.scala:

//file: foo/HelloWorld.scala
package foo {
  object HelloWorld {
    def main(args: Array[String]) {
      println("Hello, world!")
    }
  }
}

APAÇIK.MF:

Main-Class: foo.HelloWorld
Class-Path: scala-library.jar

inşa.yarasa:

@ECHO OFF

IF EXIST hellow.jar DEL hellow.jar
IF NOT EXIST scala-library.jar COPY %SCALA_HOME%\lib\scala-library.jar .

CALL scalac -sourcepath src -d bin src\foo\HelloWorld.scala

CD bin
jar -cfm ..\hellow.jar ..\MANIFEST.MF *.*
CD ..

java -jar hellow.jar

< / ^ hr .

Başarılı bir şekilde kullanmak için-jargeçiş, iki girdileri gerekirMETA-INF/MANİFEST.MFdosya: ana sınıfı; tüm bağımlılıkları için göreli URL. Belgelere notlar:

-jar

Bir program içinde saklanmış yürütmek JAR dosyası. İlk bağımsız değişken. bir yerine bir JAR dosyası adı başlangıç sınıfı adı. Bunun için Sipariş çalışma seçeneği, bildirim JAR dosyası için bir satır içermelidir Ana Sınıf adı: code. Burada, code sınıfı olan tanımlar ([] String public static void main besten) olarak hizmet veren bir yöntem uygulamanın başlangıç noktası. Bakın Kavanoz aracı referans sayfa ve Kavanoz Java izi için Öğretici Kavanoz ile çalışma hakkında bilgi dosyaları ve Jar-dosya gösterir.

Bu seçeneği kullandığınızda, JAR dosya kullanıcı sınıfları,kaynağı ve diğer kullanıcı sınıfı yol ayarları dikkate alınmaz.

(Not: JAR dosyalarını en POSTA uygulamaları ile kontrol edilebilir; muhtemelen toplu komut; Scala kod dizin adlarında boşluklar ihmal runner sürüm 2.7.4.son .)

< / ^ hr .

Bütünlüğü için, eşdeğer bir komut dosyası bash:

#!/bin/bash

if [ ! $SCALA_HOME ]
then
    echo ERROR: set a SCALA_HOME environment variable
    exit
fi

if [ ! -f scala-library.jar ]
then
    cp $SCALA_HOME/lib/scala-library.jar .
fi

scalac -sourcepath src -d bin src/foo/HelloWorld.scala

cd bin
jar -cfm ../hellow.jar ../MANIFEST.MF *
cd ..

java -jar hellow.jar

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CMTelly

    CMTelly

    2 Mayıs 2007
  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • Phymec

    Phymec

    18 Temmuz 2009