簡體   English   中英

Java類路徑搜索問題:直接設置與使用環境變量

[英]Java classpath search issue: direct setting vs using environment variables

我有一個從Java調用的Scala庫。

這是scala代碼。

package org.fun

object ScalaPower{
  def showMyPower(time:Int) = {
    (0 to time-1).mkString(", ")
  }
}

這是Java代碼。

import org.fun.*;

public class Test {
    public static void main(String args[]) {
       System.out.println("show my power: " + ScalaPower.showMyPower(3));       
    }
}

使用此構建腳本:

SCALA_LIB=~/bin/jar/scala/scala-library.jar

scalac -d ~/temp/java s.scala
javac -cp .:~/temp/java:$SCALA_LIB Test.java -d ~/temp/java
java -cp .:~/temp/java:$SCALA_LIB Test

我有錯誤。

Test.java:1: error: package org.fun does not exist
import org.fun.*;
^
Test.java:5: error: cannot find symbol
       System.out.println("show my power: " + ScalaPower.showMyPower(3));       
                                              ^
  symbol:   variable ScalaPower
  location: class Test
2 errors

有趣的是,從環境變量獲取類路徑時,我沒有問題。

SCALA_LIB=~/jar/scala/scala-library.jar
JP=.:~/temp/java:~/temp/java2:$SCALA_LIB

scalac -d ~/temp/java s.scala
scalac -d ~/temp/java2 s2.scala
javac -cp $JP Test.java -d ~/temp/java
java -cp $JP Test

為什么是這樣? 是否必須始終使用-cp將環境變量用於安裝類路徑? 還是我犯了一些錯誤? 我檢查了Mac OS X和Linux; 他們兩個都與$ JP一起工作,但沒有直接路徑登記。

代碼是從這篇文章中復制的: 如何從Java調用Scala單例方法?

我應該使用環境變量作為-cp的參數。 我檢查了Mac OS X和Linux; 他們兩個都與$ JP一起工作,但沒有直接路徑登記。

SCALA_LIB=~/jar/scala/scala-library.jar
JP=.:~/temp/java:~/temp/java2:$SCALA_LIB

scalac -d ~/temp/java s.scala
scalac -d ~/temp/java2 s2.scala
javac -cp $JP Test.java -d ~/temp/java
java -cp $JP Test

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM