Uruchamianie programu z wiersza poleceń

0

Witajcie,

Mam pewien problem z uruchomienem programu z wiersza poleceń. Program uruchamiam tak:

C:\>java -jar //svlkp004/groups/IT/"42 Systemy"/OEE/OEE.jar databaseUser databasePassword cardCode prodOrderNo itemNo itemType

Jak widać jest to uruchomienie z parametrami, do tej chwili wszystko jest ok. W następnym kroku mam jednak odczytanie konfigurcji podłączenia do bazy z pliku config.txt:

public static Connection getConnectionWithLogin(String user, String password) throws SQLException, Exception
{
 BufferedReader reader = null;
 reader = new BufferedReader(new InputStreamReader(new FileInputStream("config.txt"),"UTF-8"));
 
 String[] properties=new String[10];
 String line = null;
 int i=0,j=0;
 while((line = reader.readLine())!=null)
      {
       if(i>0)
              {
               if(i%2!=0){
                          if((i==5)|(i==7))
                                          {                                                                           
                                           properties[j]=Aes.decrypt(line);j++;
                                          }
                          else{properties[j]=line;j++;}                             
                         }
              }
       i++;  
      }  

 String databaseURL="jdbc:sqlserver:"+properties[0]+";databaseName="+properties[1];
 java.util.Properties props = new java.util.Properties();
 props.put("user", user);
 props.put("password",password);
 props.put("charSet", properties[4]);
 Connection connection = null;
 connection = DriverManager.getConnection(databaseURL,props);         

 return connection;  
}

I tutaj zaczyna się mój problem. Gdy program odpalany jest z wiersza poleceń nie potrafi wczytać pliku konfiguracyjnego:

reader = new BufferedReader(new InputStreamReader(new FileInputStream("config.txt"),"UTF-8"));

Zwyczajnie go nie znajduje, prawdopodobnie przez źle podaną lokalizacje pliku. Zaczyna działać dopiero gdy uruchomi program nie z lokalizacji C a z miejsca gdzie jest zamieszczony program:

G:\IT\42 Systemy\OEE>java -jar G:/IT/"42 Systemy"/OEE/OEE.jar databaseUser databasePassword cardCode prodOrderNo itemNo itemType

Jak moge to zmienić (jeśli można) aby mógł odpalać program z dowolnej lokalizacji. Trzeba pewnei zmienić lokalizacje FileInputStream ale nie wiem jak.

Będe wdzięczny za pomoc.

0

Jak podajesz samą nazwe pliku to szuka go w current working directory. Najprościej: wpakuj configa do jara.

0

I tam właśnie znajduje się plik konfiguracyjny. W miejscu gdzie jest jar jest też plik configuracyjny, więc powinno działać bez problemu. Pliku konfiguracyjnego nie moge wstawić na stałe do jar, ponieważ dane są zmienne i muszą znajdować się w pliku. Jakieś pomysły?

0

Wykorzystaj coś takiego

String workspace = NazwaTwojejKlasy.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath();

dostaniesz pełną nazwę jara (z katalogiem, w którym on jest).
Druga sprawa, jak często zmienia się ten plik konfiguracyjny? Wymiana pliku w jarze to przecież drobnostka.

0

Niestety w tym przypadku jest to konieczne.

String classpath = System.getProperty("java.class.path");
 classpath = classpath.replace(classpath.substring(classpath.length()-7), "");

Dzięki za pomoc.

dodanie znacznika <code class="java"> - Furious Programming

1 użytkowników online, w tym zalogowanych: 0, gości: 1