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