2014-12-05 95 views
0

我试图编译和CLASSPATH & PATH变量与命令运行Java程序如下:Java错误:找不到主类

javac -classpath path_to_external_jar:. test.java 

java -Djava.library.path=external_lib_folder -classpath path_to_external_jar:. test 

test.java代码

package cplextest; 

import ilog.concert.*; 
import ilog.cplex.*; 

import java.io.*; 
import java.util.*; 


//-------------------------------------------------------------------------- 
//File: examples/src/QPex1.java 
//Version 9.0  
//-------------------------------------------------------------------------- 
//Copyright (C) 2001-2003 by ILOG. 
//All Rights Reserved. 
//Permission is expressly granted to use this example in the 
//course of developing applications that use ILOG products. 
//-------------------------------------------------------------------------- 
// 
// Entering and optimizing a QP problem 



public class test { 
public static void main(String[] args) { 
    try { 
     IloCplex cplex = new IloCplex(); 
     IloLPMatrix lp = populateByRow(cplex); 

//#ifdef FULLTEST 
//  cplex.setParam(IloCplex.IntParam.Threads, 
//      cplex.getMax(IloCplex.IntParam.Threads)); 
//#endif 

     if (cplex.solve()) { 
     double[] x  = cplex.getValues(lp); 
     double[] dj = cplex.getReducedCosts(lp); 
     double[] pi = cplex.getDuals(lp); 
     double[] slack = cplex.getSlacks(lp); 

     System.out.println("Solution status = " + cplex.getStatus()); 
     System.out.println("Solution value = " + cplex.getObjValue()); 

     int ncols = lp.getNcols(); 
     for (int j = 0; j < ncols; ++j) { 
      System.out.println("Column: " + j + 
           " Value = " + x[j] + 
           " Reduced cost = " + dj[j]); 
     } 

     int nrows = lp.getNrows(); 
     for (int i = 0; i < nrows; ++i) { 
      System.out.println("Row : " + i + 
           " Slack = " + slack[i] + 
           " Pi = " + pi[i]); 
     } 

     cplex.exportModel("qpex1.lp"); 
     } 
     cplex.end(); 
    } 
    catch (IloException e) { 
     System.err.println("Concert exception '" + e + "' caught"); 
    } 
} 

static IloLPMatrix populateByRow(IloMPModeler model) throws IloException { 
    IloLPMatrix lp = model.addLPMatrix(); 

    double[] lb = {0.0, 0.0, 0.0}; 
    double[] ub = {40.0, Double.MAX_VALUE, Double.MAX_VALUE}; 
    IloNumVar[] x = model.numVarArray(model.columnArray(lp, 3), lb, ub); 

    double[] lhs = {-Double.MAX_VALUE, -Double.MAX_VALUE}; 
    double[] rhs = {20.0, 30.0}; 
    double[][] val = { {-1.0, 1.0, 1.0}, 
         { 1.0, -3.0, 1.0} }; 
    int[][] ind = { {0, 1, 2}, 
         {0, 1, 2} }; 
    lp.addRows(lhs, rhs, ind, val); 

    // Q = 0.5 (33*x0*x0 + 22*x1*x1 + 11*x2*x2 - 12*x0*x1 - 23*x1*x2) 
    IloNumExpr x00 = model.prod(33, x[0], x[0]); 
    IloNumExpr x11 = model.prod(22, x[1], x[1]); 
    IloNumExpr x22 = model.prod(11, x[2], x[2]); 
    IloNumExpr x01 = model.prod(-12, x[0], x[1]); 
    IloNumExpr x12 = model.prod(-23, x[1], x[2]); 
    IloNumExpr Q = model.prod(0.5, model.sum(x00, x11, x22, x01, x12)); 

    double[] objvals = {1.0, 2.0, 3.0}; 
    model.add(model.maximize(model.diff(model.scalProd(x, objvals), Q))); 

    return (lp); 
} 
} 

test.java位于当前文件夹中。汇编运行良好,但是当我运行上面的第二个命令时,错误:Could not find the main class:test. Program will exit.跳出。

任何人都有关于此问题的建议?

+0

你可以发布你的test.java类的代码?可能是一些命名问题。 – Chris 2014-12-05 07:13:25

+0

检查JRE和JRK应该相互匹配的版本。 – sridhar 2014-12-05 07:13:49

+0

@Chris补充说。谢谢:) – Sylvia 2014-12-05 07:21:34

回答

1

问题出在您的主类所在的package中。Java机器无法为您的课程优化default package

无论是从类中删除或put compiled class到cplextest子package cplextest;线,并命令

java -classpath path_to_external_jar:. cplextest.test 
+0

罗马是正确的,我的编译器甚至给出了一个特定的错误。 – Chris 2014-12-05 07:38:51

+0

谢谢罗马!两种方式解决问题。救了我的一天:p – Sylvia 2014-12-05 07:44:40

0

如果从根目录中运行Java程序,那么你需要指定完全分类名称运行。

,所以你需要运行它

java cplextest.test