Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Запустить файл с параметрами


Автор: scyther 20.5.2008, 16:20
Всем привет. Сделал простенькую програмку которая читает *.txt файл и сохраняет *.cue файл (уже форматированый текст данного формата).
Вопрос вот в чем: Как сделать, чтобы можна было запускать с командной строки мой класс с параметрами? Например так: java main.class inFile.txt outFile.cue
Вот код програмки, если Вы поняли что мне нужно, посоветуйте может как лучше ето сделать smile 
Код
package main;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Main {

    /**
     * @param args
     * @throws IOException
     */

    public static void main(String[] args) throws IOException {
        openFile();
        System.out.println("done");
    }

    public static void openFile() throws IOException {
        openFile( "Artist", "SetName" );
    }

    public static void openFile(String artist, String set) throws IOException {
        File file = new File("c:\\Downloads\\Музыка\\070_Nitrous_Oxide_DI.fm_NET_2008_05_11\\list.txt");
        FileWriter fileWriter = new FileWriter("c:\\Downloads\\Музыка\\070_Nitrous_Oxide_DI.fm_NET_2008_05_11\\list.cue");
        FileReader fileReader = new FileReader(file);
        BufferedReader reader = new BufferedReader(fileReader);
        String readLine = "",
            bufLine = "";
        bufLine = "PERFORMER \"" + artist + "\"\n";
        fileWriter.write( bufLine, 0, bufLine.length() );
        bufLine = "TITLE \"" + set + "\"\n";
        fileWriter.write( bufLine, 0, bufLine.length() );
        bufLine = "FILE \"" + file.getName() + "\" MP3\n";
        fileWriter.write( bufLine, 0, bufLine.length() );
        while ( (readLine = reader.readLine()) != null ) {
            Integer
                start = readLine.indexOf("]"),
                mid = readLine.indexOf(" - "),
                last = readLine.lastIndexOf("(") - 1;
            String
                index = readLine.substring( 1, start ),
                track = readLine.substring( start+2, start+4 ),
                performer = readLine.substring( start+6, mid ),
                title = readLine.substring( mid+3, last );
            bufLine = "  TRACK " + track + " AUDIO\n";
            fileWriter.write( bufLine, 0, bufLine.length() );
            bufLine = "    PERFORMER \"" + performer + "\"\n";
            fileWriter.write( bufLine, 0, bufLine.length() );
            bufLine = "    TITLE \"" + title + "\"\n";
            fileWriter.write( bufLine, 0, bufLine.length() );
            bufLine = "    INDEX 01 " + index + ":00\n";
            fileWriter.write( bufLine, 0, bufLine.length() );
        }
        reader.close();
        fileReader.close();
        fileWriter.close();
    }

}

Автор: Aristotelb 20.5.2008, 16:26
java main.class inFile.txt outFile.cue,
при этом inFile.txt окажется первым элементом массива args в методе main, а outFile.cue вторым

Автор: scyther 20.5.2008, 17:57
c:\Downloads\Музыка\070_Nitrous_Oxide_DI.fm_NET_2008_05_11>java Main.class msg.txt kilo.cue
Вот такой ERROR пишет:
Код
Exception in thread "main" java.lang.NoClassDefFoundError: Main/class
Caused by: java.lang.ClassNotFoundException: Main.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)


а с Eclipse запускается правильно

Автор: LSD 20.5.2008, 18:02
Не
Код

java Main.class msg.txt kilo.cue

а
Код

java main.Main msg.txt kilo.cue

Автор: scyther 20.5.2008, 18:18
Вот такой main
Код

    public static void main(String[] args) throws IOException {
        openFile(args[0], args[1]);
        System.out.println("done");
    }

java main.Main msg.txt kilo.cue - не помогло :(

Автор: Orange 20.5.2008, 18:48
Цитата(scyther @ 20.5.2008,  18:18)
Вот такой main
Код

    public static void main(String[] args) throws IOException {
        openFile(args[0], args[1]);
        System.out.println("done");
    }

java main.Main msg.txt kilo.cue - не помогло :(

а что на консоль выдаёт?
попробуй так: java -cp .. main.Main msg.txt kilo.cue

Автор: scyther 21.5.2008, 14:27
Цитата(Orange @  20.5.2008,  18:48 Найти цитируемый пост)
попробуй так: java -cp .. main.Main msg.txt kilo.cue

 smile работает, спасиба
только несовсем понятно "java -cp - class search path of directories and zip/jar files", а ".." - что означает эти точки?

Автор: Orange 21.5.2008, 15:13
.. - имел ввиду выйти в корень директории main. То есть другими словами package запускается не из дирректории где у тебя лежат скомпилированные классы, а из корневой его дирректории.

Автор: LSD 21.5.2008, 15:52
В http://forum.vingrad.ru/faq/topic-157939.html!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)