标签: classpath

打包Java控制台应用程序的最快方法

我在自定义包层次结构中构建了一小组类,其中包含一个使用它们的控制台应用程序类.从JCreator和命令提示符一切正常.

我想构建一个重用同一个包的第二个控制台应用程序.

作为一个Java新手,最快,最脏的方法是什么?

我主要担心的是避免将包目录复制到新的控制台应用程序目录.

使用JCreator,我没有任何问题将包目录添加到项目并编译和运行.但是当我尝试从命令行运行控制台应用程序时,它无法在包层次结构中找到类.

在Visual Studio中,您只需添加引用...

java console packages classpath

4
推荐指数
1
解决办法
2323
查看次数

Java类路径中的点(。)有什么作用?

这是“ SCJP模拟考试”中的一个示例问题:

给定默认的类路径:

/ foo

而这个目录结构:

foo
  |
 test
    |
   xcom
     |--A.class
     |--B.java
Run Code Online (Sandbox Code Playgroud)

和这两个文件:

package xcom;
public class A { }
package xcom;
public class B extends A { }
Run Code Online (Sandbox Code Playgroud)

哪个允许B.java进行编译?(选择所有适用项。)

A.设置当前目录xcom然后调用

javac B.java
Run Code Online (Sandbox Code Playgroud)

B.设置当前目录xcom然后调用

javac -classpath . B.java
Run Code Online (Sandbox Code Playgroud)

C.设置当前目录进行测试然后调用

javac -classpath . xcom/B.java
Run Code Online (Sandbox Code Playgroud)

D.设置当前目录进行测试然后调用

javac -classpath xcom B.java
Run Code Online (Sandbox Code Playgroud)

E.设置当前目录进行测试然后调用

javac -classpath xcom:. B.java
Run Code Online (Sandbox Code Playgroud)

答案是C,我不明白.那里的运算符的用法。请解释。

这本书说:

为了进行B.java编译,编译器首先需要能够找到B.java。一旦找到B.java,就需要找到A.class因为A.classxcom软件包中,编译器无法找到A.class是否从xcom目录中调用了它。请记住, …

java scjp javac classpath

4
推荐指数
1
解决办法
5057
查看次数

无法通过命令行添加类路径

我想通过命令行调用添加类路径.电话看起来像这样:

java -cp ..\conf -jar ..\lib\switcher.jar
Run Code Online (Sandbox Code Playgroud)

conf目录中是一个XML文件,它定义应用程序上下文和log4j.properties文件.但是当我运行这个命令时,Java显然无法找到这两个文件,尽管我已将它们添加到类路径中.

我也尝试指定conf目录的绝对路径,但它也不起作用.

任何提示?

java command-line classpath

4
推荐指数
1
解决办法
2646
查看次数

当前目录中的java类文件?

"java"如何知道要在不设置类path.ie的情况下执行的类文件.默认情况下是否检查当前目录,或者我们还需要为当前目录设置类路径.

java classpath

4
推荐指数
1
解决办法
9760
查看次数

getClass().getResource("/")在命令行中返回null

我正在尝试在/src/main/resources/file.txt中读取我的maven项目中的文件.

我正在使用

URL url=this.getClass().getResource("/");
String filePath=url.getPath()+"file.txt";
Run Code Online (Sandbox Code Playgroud)

当通过eclipse运行时,url对象获取正确的值.

但是,当我打包jar并在命令行中运行它时:

jar -cp myjar.jar SampleTest
Run Code Online (Sandbox Code Playgroud)

它为'url'对象返回null并在下一行中抛出NullPointerException.

我使用文件浏览器打开了我的Jar文件并进行了检查.它在Jar内的"/"位置有'file.txt'.

我哪里错了?

java jar classpath classloader maven

4
推荐指数
1
解决办法
1万
查看次数

使用Maven在manifest的类路径中生成非版本化的jar条目

为了实现可执行的jar文件,我将以下内容添加到pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>my.main.Class</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

结果是(MANIFEST.MF)

...
Class-Path: library1-8.10-SNAPSHOT.jar hessian-4.0.7.jar library2-8.10-SNAPSHOT.jar json-lib-2.2.3-jdk15.jar ezmorph-1.0.6.jar library3-8.10-SNAPSHOT.jar commons-io-1.4.jar
...
Run Code Online (Sandbox Code Playgroud)

等等

这意味着,jar的版本包含在文件名中.我希望没有它:

Class-Path: library.jar hessian.jar library2.jar json-lib.jar ezmorph.jar library3.jar commons-io.jar
Run Code Online (Sandbox Code Playgroud)

只是因为这是他们在lib文件夹中命名的方式.

我们使用的是Maven 2.2,因此classpathLayoutType和customClasspathLayout不可用(如果他们有帮助的话).

有人可以帮忙吗?

maven-2 manifest classpath maven

4
推荐指数
1
解决办法
3232
查看次数

Java - 无法导入com.package.*(通配符)

这可能是一个简单的问题,但谷歌一无所获.

我已阅读java中的包帮助 - 导入不起作用

我仍然不明白为什么直接导入会起作用但是通配符不会.[编辑]通过类包我的意思是一个类包.我还是Java新手,所以我不知道语义[编辑]

我有一个类包:com.company.functions,当我尝试import com.company.*收到以下错误.

java: package com.company does not exist
Run Code Online (Sandbox Code Playgroud)

如果我com.company.function明确导入,那么我没有问题.

所以我想我有一个解决方案但是为了学习,有人可以解释为什么我会看到这个问题吗?

IDE:IntelliJ IDEA 12

import com.sociapathy.*;  <--Throws compile error  java: package com.sociapathy does       not exist
import com.sociapathy.databaseAccess.MySQL;  <--Works just fine
Run Code Online (Sandbox Code Playgroud)

java import classpath

4
推荐指数
1
解决办法
2817
查看次数

在spring配置文件中设置资源

我想在spring配置中配置推土机.当使用xml配置时,它就像

<bean class="org.dozer.spring.DozerBeanMapperFactoryBean">
    <property name="mappingFiles" value="classpath*:dozer/**/*.dzr.xml"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

如何在配置文件中定义资源.我尝试使用ctx.getResource()但我无法访问Configuration类中的ApplicationContext.

我尝试了ContextRefreshedEvent并从那里添加资源,但仍然没有运气.(已调用afterPropertiesSet并且添加的映射不起作用)

public class ContextRefreshedEventBuilder extends ContextRefreshedEvent {
public ContextRefreshedEventBuilder(ApplicationContext ctx) {
    super(ctx);
    DozerBeanMapperFactoryBean mapper = ctx.getBean(DozerBeanMapperFactoryBean.class);
    try {
        mapper.setMappingFiles(ctx.getResources("classpath*:dozer/**/*.dzr.xml"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

还尝试使用ClassPathResource但无法找到正确的方法

DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
mapper.setMappingFiles(new Resource[]{new ClassPathResource("classpath*:dozer/**/*.dzr.xml")});
return mapper;
Run Code Online (Sandbox Code Playgroud)

如何将ClassPathResource添加为映射位置?

- -回答 - -

@Bean
public DozerBeanMapperFactoryBean configDozer() throws IOException {
    DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
    Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:dozer/**/*.dzr.xml");
    mapper.setMappingFiles(resources);
    return mapper;
}
Run Code Online (Sandbox Code Playgroud)

configuration resources spring classpath spring-annotations

4
推荐指数
1
解决办法
5981
查看次数

对于我的生活无法理解classpath

请向我解释classpath,就像我10岁.

当我使用javac编译程序时,我通常会转到主类所在的根文件夹:

javac Test.java
Run Code Online (Sandbox Code Playgroud)

它编译程序和子目录中的所有类.对于上面的例子:

C:\newApp\ --->这是主类(Test.java)所在的文件夹.

C:\newApp\com\example\class --->这是其他一些类的文件夹.

javac使用该单个命令编译所有java文件.为他们制作.class文件.

现在我可以运行应用程序:

java Test
Run Code Online (Sandbox Code Playgroud)

什么是classpath?在这种情况下,classpath究竟是什么?我应该怎么知道classpath?使用IDE时,是否需要设置它?

java javac classpath

4
推荐指数
1
解决办法
645
查看次数

为什么Vaadin 14随附的Guava库没有出现在我项目的类路径中?

Vaadin 14.1.0alpha4 通过其Maven配置自动包括Google Guava版本25库。请参阅左侧列出的以下屏幕截图。

但是在我自己的代码中,当引用Google Guava中的类时,IntelliJ将其标记为编译器错误。IntelliJ提供了“将库Guava添加到类路径”。在下面的屏幕截图中,请参见右侧的两个橙色箭头。

?为什么在我的Vaadin 14项目中列出的作为下载库列出的Guava尚未在类路径中?为什么番石榴对我的代码不可用?

在此处输入图片说明

java classpath vaadin maven vaadin-flow

4
推荐指数
1
解决办法
59
查看次数