使用外部.jar在命令行中编译java程序

时间:2014-12-23 09:30:43

标签: java eclipse command-line jar javac

首先,我已经搜索了一些相关的主题,并且已经尝试了那些指向的解决方案,但仍然存在一些问题,所以我试着在这里解释一下希望找到解决方案。< / p>

我试图在命令行上编译一个已经在eclipse上工作的java程序。 .jar文件和java文件都在同一个目录中,我试图编译的类不在.jar中,但是在这个类中我使用了一些属于.jar的方法(paillier.jar)< / p>

我首先尝试过这个:

javac -cp paillier.jar CoupleGen.java
java -cp paillier.jar CoupleGen

第一行给出了CoupleGen.class并且暂时没有问题,当我输入第二行时它给出了错误

Error: Could not find or load main class CoupleGen

所以,在这里阅读一些主题我尝试了另一种方式

javac -cp paillier.jar CoupleGen.java
java -cp .;paillier.jar CoupleGen

结果是&#34;使用方法&#34;带有这些行结尾的java命令

paillier.jar command not found

所以,我显然犯了一些错误,但实际上我无法理解。 如果需要,我会设置环境变量。

非常感谢任何帮助。

干杯

这是我尝试编译的代码

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Random;

import paillierp.key.KeyGen;
import paillierp.key.PaillierKey;
import paillierp.key.PaillierPrivateKey;


public class CoupleGen {

    public static void main(String[] args) throws IOException{
        //Creo un messaggio m da criptare

        //for (int j=1; j==2; j++){

                int nodeID=5;
                int s=32;
                Random random = new Random();
                long seed = random.nextLong();
                PaillierPrivateKey pr= KeyGen.PaillierKey(s, seed);
                PaillierKey pu= pr.getPublicKey();
                System.out.println("PublicKey:("+pr.getN()+","+pr.getNPlusOne()+")");
                String pubkey ="PublicKey"+nodeID;
                    FileWriter File= new FileWriter(pubkey);
                    PrintWriter out=new PrintWriter(File);
                    out.println("n:" + pu.getN());
                    out.println("n+1:" + pu.getNPlusOne());
                    out.println("n^s:" + pu.getNS());
                    out.println("n^s+1:" + pu.getNSPlusOne());
                //  out.println("rnd:" + pu.getRnd());
                    out.println("k:" + pu.getK());  
                    out.close();
        //} for not working on this pc
    }
}

2 个答案:

答案 0 :(得分:1)

>> paillier.jar command not found

这听起来像是在Linux或Mac上运行它,并且由于分号;,命令行将其解释为两个不同的命令:

java -cp .
paillier.jar CoupleGen

分号仅用作Windows上的路径分隔符,在Linux和Mac上,分号应使用冒号:。所以试着运行你的代码:

java -cp .:paillier.jar CoupleGen

答案 1 :(得分:0)

当您执行以下行时,您收到以下错误吗?

javac -cp paillier.jar CoupleGen.java

错误:无法找到或加载主类CoupleGen

这意味着编译器正在paillier.jar中寻找CouplenGen.java。实际上,CoupleGen不在jar文件中。