如何使用来自终端

时间:2018-04-22 21:08:48

标签: java jar terminal compiler-errors

我有一个项目,其结构如下

enter image description here

如果我从IDE运行它一切正常,但我无法从终端运行它。

编译我尝试从Task_3

javac -cp lib/*.jar src/*.java 

并且它有效,但我不能让它运行

如果我尝试

cd src

java -cp .:jsoup-1.11.3.jar Main

它给我一个错误线程中的异常“main”java.io.FileNotFoundException:src / out.txt(没有这样的文件或目录)

我使用此txt.out的代码位于Writer类中,如下所示:

 String fs = System.getProperty("file.separator");

 FileWriter fw = new FileWriter("src"+ fs + "out.txt");

我尝试将路径更改为'./out.txt',它在终端中编译,但随后它将nothings写入文件out.txt。我在编译时尝试运行时,在线程“main”java.lang.NoClassDefFoundError:org / jsoup / Jsoup 中出现错误异常... 我真的卡住了,我会感激任何帮助!

3 个答案:

答案 0 :(得分:1)

您的主类和txt文件位于同一文件夹中,因此请勿将路径指定为JTextArea

答案 1 :(得分:1)

因为您的代码硬编码从src目录中读取out.txt并且您在src目录中运行了代码,显然它无法在src /目录下找到另一个src / out.txt。

所以不要进入src目录,留在Task_3目录中试试这个:

java -cp src/:lib/jsoup-1.11.3.jar Main

答案 2 :(得分:0)

你做错了。我真的建议使用Maven这样的东西。我知道这可能太多了,但值得。 Maven绝对是一个标准,它使一切变得更加容易。 :)

1。 Mavenize您的项目

人民币项目并选择添加框架支持...

enter image description here

然后从列表中选择 Maven ,并应用。

您现在有一个新的pom.xml文件。输入它。 相应地更改artifactIdgroupId

接下来应用适当的插件:

<build>
    <plugins>
        <!-- That allows you to shade your libraries to your jar !-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- That plugin compiles your jar with Java 8 !-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <!-- That plugin adds a manifest and makes your jar file !-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>  YOUR MAIN CLASS  </mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
    <!-- This allow Maven to filter your resources folder! !-->
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

(只需复制并粘贴) 记得!您需要将YOUR MAIN CLASS更改为您的main(String[] args)方法所在的正确主类!这允许Maven创建一个清单文件(允许你从终端打开jar)

2。添加您的JSoup依赖

看看有多容易,没有下载,只需粘贴:

<dependencies>
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.7.2</version>
    </dependency>
</dependencies>

等待!请务必点击右下角的Enable auto-import!这将允许Maven自动下载您的依赖项。

3。添加文件

将您的out.txt文件放入resources文件夹,将.java文件放入src/main/java/文件夹,然后就可以了!

现在您可以使用

获取您的信息流
ClassLoader loader = YourClass.class.getClassLoader();
InputStream inputStream = loader.getResourceAsStream("out.txt");

请记住,您不应该写入该文件,只能阅读。如果你想写,那么你应该在别处创建该文件。

4。建筑

要构建你的jar,只需打开Maven Tools,如下所示: enter image description here

然后点击install命令:

enter image description here

等一下,准备好使用的jar文件应该在根项目的/target/文件夹中。

如果您有任何疑问,请询问他们!我将帮助您使用Maven。 ;)