我在Config.groovy文件中有以下内容:
grails.config.locations = [ "classpath:env.groovy" ]
Run Code Online (Sandbox Code Playgroud)
现在,我应该在哪里放置"env.groovy",以便在grails run-app中可以在CLASSPATH上使用它?这里的文档非常缺乏.
我可以通过在$ APP_HOME/etc中放置"env.groovy"然后运行来让它在纯命令行上工作:
$ grails -classpath ./etc run-app
Run Code Online (Sandbox Code Playgroud)
这似乎有点hackish,但我可以忍受它...但是,当我使用Grails eclipse插件(STS)启动run-app时,我无法获得任何此类配置:
Unable to load specified config location classpath:env.groovy : class path resource [env.groovy] cannot be opened because it does not exist
Run Code Online (Sandbox Code Playgroud)
我在这里,这里,这里和这里看过相关的帖子,但答案却一直没有实现.
我正在寻找一个基于CLASSPATH的解决方案,它可以在开发模式(命令行和eclipse)中使用'run-app'.我知道如何为我的部署servlet容器设置CLASSPATH,所以这不是问题.
我创建了一个自定义SSLSocketFactory类并将其设置如下
ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");
ldapEnv.put(FACTORY_SOCKET, socketFactoryClass);
LdapContext ldapContext = new InitialLdapContext(ldapEnv, null);
Run Code Online (Sandbox Code Playgroud)
它从Eclipse Dev Environment运行时运行正常,并从命令提示符运行它作为Jar文件.但是当我将其包装在服务包装器中并将其作为Windows服务启动时,它不起作用.我得到以下异常,
javax.naming.CommunicationException: 192.168.100.22:636 [Root exception is java.lang.ClassNotFoundException: com/testing/diraccess/service/ActiveDirectory$TestSSLFactory]
at com.sun.jndi.ldap.Connection.<init>(Unknown Source)
at com.sun.jndi.ldap.LdapClient.<init>(Unknown Source)
at com.sun.jndi.ldap.LdapClient.getInstance(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.connect(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.<init>(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(Unknown Source)
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.ldap.InitialLdapContext.<init>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com/testing/diraccess/service/ActiveDirectory$TestSSLFactory
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.sun.jndi.ldap.VersionHelper12.loadClass(Unknown Source)
at com.sun.jndi.ldap.Connection.createSocket(Unknown Source)
... 35 more
Run Code Online (Sandbox Code Playgroud)
任何帮助???
我使用了Maven中的指令- 如何在jar中添加任意类路径条目以向Class-Path属性添加任意条目.这是我的MANIFEST.MF档案:
Manifest-Version: 1.0
Class-Path: jace-runtime.jar
Main-Class: org.jace.examples.Test
Run Code Online (Sandbox Code Playgroud)
我定义了org.jace.examples.Test,如下所示:
public class Test
{
public static void main(String[] args)
{
System.out.println("classpath: " + System.getProperty("java.class.path"));
System.out.println("PeerExample: " + Class.forName("org.jace.util.ShutdownHook"));
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里org.jace.util.ShutdownHook定义jace-runtime.jar.当我调用时,java -jar peer_example1.jar我得到以下输出:
classpath: peer_example1.jar
线程"main"中的异常java.lang.ClassNotFoundException:org.jace.util.ShutdownHook
换句话说,Java正在将可执行JAR文件添加到类路径中但忽略不计Class-Path.如果我调用java -cp jace-runtime.jar;peer_example1.jar org.jace.examples.Test我得到预期的输出:
classpath: jace-runtime.jar;peer_example1.jar
有任何想法吗?
如何将类路径上的文件名转换为真实文件名?
例如,假设该目录"C:\workspace\project\target\classes"位于类路径中.在该目录中是一个文件,例如info.properties.
如果只给出字符串,你将如何确定(在运行时)info.properties文件的绝对文件路径"info.properties"?
结果就像是"C:\workspace\project\target\classes\info.properties".
为什么这有用?编写单元测试时,您可能希望访问测试资源(src/main/resources)中捆绑的文件,但是正在使用第三方库或需要真实文件名的其他系统,而不是相对类路径引用.
注意:我自己已经回答了这个问题,因为我认为这是一个有用的技巧,但看起来没有人曾经问过这个问题.
我知道这个问题有很多重复,但我已经看过了所有问题,但没有一个能解决这个问题.
我正在尝试运行一个具有main函数的类.我已经清理了项目,检查了类路径'.',将bin文件夹添加到运行配置下的类路径中.我不确定还有什么可以尝试,因为该类肯定在源文件夹中.
有人可以帮我解决这个问题吗?
package testIt;
public class MemoryVisualizerApp extends Application{
public static void main(String[] args) {
launch(args);
}
//Setup the scene and launch with given properties
@Override
public void start(Stage primaryStage) throws IOException{
Parent root = FXMLLoader.load(getClass().getResource("/MemoryVisualizer.fxml"));
Scene scene = new Scene(root, 650, 300);
//Set whether the screen should be re-sizable (possibly best size = default)
primaryStage.setResizable(true);
primaryStage.setMinHeight(300);
primaryStage.setMinWidth(550);
primaryStage.setTitle("Memory Usage");
primaryStage.setScene(scene);
scene.getStylesheets().add("testIt/MemoryVisualizer.css");
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>()
{
public void handle(WindowEvent e){
/*Currently the threads continue running after window is closed. Looking …Run Code Online (Sandbox Code Playgroud) 我下载apache-log4j-1.2.16.zip并解压缩它.然后我将其重命名为LOG4J_HOME并将其放在/home/appnetix我的文件夹中.我尝试使用以下命令在终端中设置类路径:
[appnetix@Sanjeev ~]$ set classpath=%path%;LOG4J_HOME/log4j-1.2.16.jar;
Run Code Online (Sandbox Code Playgroud)
那回来了:
bash: LOG4J_HOME/log4j-1.2.16.jar: Permission denied
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
[appnetix@Sanjeev ~]$ set classpath=%path%;//home/appnetix/LOG4J_HOME/log4j-1.2.16.jar;
Run Code Online (Sandbox Code Playgroud)
但我得到了这个:
bash: //home/appnetix/LOG4J_HOME/log4j-1.2.16.jar: Permission denied
Run Code Online (Sandbox Code Playgroud)
请帮助,我是Linux的新手(一个月).
我有一个包含在类路径中的目录中的文件.看起来像这样pl/shenlon/io/gui/appData/file.txt.现在,当我尝试将其转换为文件并使用以下代码阅读时:
File cityNamesFile = new File(ClassLoader.getSystemResource("pl/shenlon/io/gui/appData/list.txt").toURI());
Scanner cns = new Scanner(cityNamesFile);
Run Code Online (Sandbox Code Playgroud)
我得到以下内容: -
error - java.lang.IllegalArgumentException: URI is not hierarchical.
我该如何解决这个问题?
我试着mvn install收到这条消息:
Compilation failure
Unable to locate the Javac Compiler in:
/usr/lib/jvm/java-7-openjdk-amd64/jre/../lib/tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.
Run Code Online (Sandbox Code Playgroud)
好吧,有一个开放的jdk,我也下载了另一个.我试图将JAVA_HOME指向两者,现在它已设置:
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_03
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
Run Code Online (Sandbox Code Playgroud)
我也尝试选择其中一个打开sudo update-alternatives --config java但在其中使用不同的jdk版本得到相同的错误.
我该如何解决这个问题?提前致谢.
我的Java应用程序需要能够找到一个myconfig/将捆绑在同一个JAR中的目录:
myjar.jar/
com/
me/
myproject/
ConfigLoader.java --> looks for myconfig/ directory and its contents
myconfig/
conf-1.xml
conf.properties
... etc.
Run Code Online (Sandbox Code Playgroud)
我如何实际myconfig/从运行时类路径中读取此目录?我做了一些研究,似乎从类路径中读取文件的常规方法对目录不起作用:
InputStream stream = ConfigLoader.class.getResourceAsStream("myconfig");
Run Code Online (Sandbox Code Playgroud)
那么有谁知道如何从运行时类路径(而不是单个文件)读取整个目录?提前致谢!
请注意:无法单独加载文件,myconfig是一个包含数千个属性文件的目录.
我想在其他目录中包含类文件,而不是主类的目录.
如果我把这些目录放入它的Class-Path属性MANIFEST.MF不起作用.
为什么?除了将这些类打包到jar文件中之外,还有其他解决方案吗?