2014-12-05 78 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