Tag: classpath

关于自动重新编译,我无法发现javac的-classpath和-sourcepath选项之间的区别

我试图理解javac的-classpath和-sourcepath选项之间的区别,关于源代码文件的自动重新编译。 我阅读了关于javac主题的Java文档,并且对于它的-sourcepath选项,它说明了 – Note: Classes found through the class path may be subject to automatic recompilation if their sources are also found 我还查看了这个网页 (idevelopment.info),以了解有关javac的-classpath和-sourcepath选项的更多信息。 在他们的示例中,它描述了一个测试项目,涉及两个名为TestFoo.java(一个超类)和TestBaz.java(一个依赖子类)的java文件。 它给出了如何编译这个测试项目的三个选项,其中两个总结如下。 选项#2 在编译TestBaz时将TestFoo添加到源路径: javac -d baz/classes -sourcepath foo/src baz/src/TestBaz.java 选项#3 将依赖项放在sourcepath和classpath中。 然后,如果类路径中的.class文件过期,则将重新编译sourcepath中的.java文件。 不幸的是,我无法发现这两个选项之间的区别。 例如,在选项#2(不使用-classpath)中,如果我编辑TestFoo.java或TestBaz.java,那么我将获得更新的TestFoo.class或TestBaz.class文件。 换句话说,如果.class文件过时,那么将重新编译源代码。 在上面的选项#3(使用-classpath)中,会发生同样的事情。 因此,我看不出选项#2和#3之间的区别。 有人可以概述一个简单的示例测试项目的结构,我可以看到两个略有不同的javac命令与它一起使用吗? 一个javac示例命令应该使用-classpath ,而另一个不应该使用-classpath 。 当使用包含-classpath的javac示例时,如果找到编辑的超类源文件,则会发生自动重新编译。 当使用排除-classpath的javac示例时,如果已编辑超类源文件,则不会进行自动重新编译。 非常感谢。

GlassFish服务器收到消息时出现java.lang.NoClassDefFoundError错误

使用eclipse火星和玻璃鱼,我已经制作了一个本地服务器。 在同一个包中,我有一个名为MyClass.java的类。 每次,服务器收到一条消息,我希望消息由MyClass(及其方法)处理。 这就是我所拥有的: package com.MT; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.server.ServerEndpoint; @ServerEndpoint(“/serverendpointdemo”) public class ServerEndpointDemo { @OnOpen public void handleOpen () { System.out.println(“JAVA: Client is now connected…”); } @OnMessage public String handleMessage (String message) { System.out.println(“JAVA: Received from client: “+ message); MyClass x = new MyClass(); String replyMessage = x.someMethod(message); […]

数据库连接?

如何使用Java应用程序建立SQL 2005数据库连接。 实际上我不知道如何设置JDBC的路径。 任何帮助都会很棒。

Java Classpath错误 – 无法找到我的类

我试图使用randoop(Java自动测试生成器)和randoop找不到我的类: eliezer@ubuntu:~/Desktop$ java -ea -classpath \ randoop.1.3.2.jar:home/eliezer/myclasses \ randoop.main.Main gentests \ –testclass=/home/eliezer/Desktop/myclasses/ArrayListError policy = sun.security.provider.PolicyFile@85af80 Throwable thrown while handling command:java.lang.Error:\ classForName(/home/eliezer/Desktop/myclasses/ArrayListError) java.lang.Error: classForName(/home/eliezer/Desktop/myclasses/ArrayListError) at randoop.util.Reflection.classForName(Reflection.java:206) at randoop.util.Reflection.loadClassesFromList(Reflection.java:386) at randoop.main.GenInputsAbstract.findClassesFromArgs(GenInputsAbstract.java:507) at randoop.main.GenTests.handle(GenTests.java:184) at randoop.main.Main.nonStaticMain(Main.java:80) at randoop.main.Main.main(Main.java:42) Caused by: java.lang.ClassNotFoundException: \ /home/eliezer/Desktop/myclasses/ArrayListError at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:186) at randoop.util.Reflection.classForName(Reflection.java:198) … 5 more Randoop failed. Last sequence under […]

Class.getResourceAsStream的解释以及如何在Tomcat中为简单的Java Web应用程序设置它?

我有一个非常简单的java web应用程序,它部署到Tomcat。 在这个应用程序中,我有一些代码如下: package com.mywebapp.hello; import javax.servlet.http.*; import java.io.*; public class PdfTwoServlet extends HttpServlet { public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException { httpServletResponse.setContentType(“application/pdf”); InputStream is = PdfTwoServlet.class.getResourceAsStream(“/two.pdf”); 当我编译我的代码并将其部署到tomcat时,目录结构如下所示: 这就是C:\ Tomcat \ webapps \ myApplication: 所以 PdfTwoServlet.class.getResourceAsStream(“/two.pdf”); 工作正常,找到类文件夹下的文件two.pdf,但我不知道这是如何工作的。 以编程方式访问JSF应用程序中的属性文件 BalusC说: Class#getResourceAsStream()可以采用一个路径,该路径相对于您在那里使用的Class的位置作为起点。 如果使用/foo/filename.properties,那么它实际上将从类路径根加载foo / filename.properties。 我有两个问题: 1)为什么classpath根目录是WEB-INF \ classes文件夹? 它在哪里确定? (据我所知,应该是因为我说的代码工作正常。) 根据这个: http : //docs.oracle.com/javase/tutorial/essential/environment/paths.html […]

带有Ant的Java NoClassDefFoundError

我在res/lib文件夹中有第三方.jar文件。 ANT build.xml如下所示: .java文件如下: import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVPrinter; import org.apache.commons.csv.CSVRecord; public class IO { public static void readCSVFile(File file) throws IOException { FileReader in = new FileReader(file); Iterable record = CSVFormat.DEFAULT.parse(in); } } 编译没问题,但是我遇到了运行时错误: java.lang.NoClassDefFoundError: org/apache/commons/csv/CSVFormat 。 我认为类路径有问题,但对我来说似乎没问题。 更新: 如果我使用java -cp path;. Main它正在运行java -cp path;. Main java -cp path;. Main 。 我曾尝试编写一个ANT脚本来运行它: 我在命令行中编写了ant […]

ClassNotFoundException在修改后的SimpleShortestPathsVertex上运行GiraphRunner

我对Giraph比较陌生,我正在努力让我的Giraph edit-compile-deploy循环适用于我们的代码。 我能够运行各种灵感来自http://blog.cloudera.com/blog/2014/02/how-to-write-and-run-giraph-jobs-on-hadoop/的例子,但我坚持不懈运行我的SimpleShortestPathsVertex Giraph示例的修改版本时出现ClassNotFoundException。 我已经尝试过-libjars和HADOOP_CLASSPATH的各种组合,但我没有想法,我真的很感谢你的帮助。 细节如下。 版本 Hadoop:Hadoop 2.0.0-cdh4.4.0 Giraph:giraph-examples-1.0.0-for-hadoop-2.0.0-alpha-jar-with-dependencies.jar PageRankBenchmark运行正常 $ hadoop jar $GIRAPH_HOME/giraph-examples/target/giraph-examples-1.0.0-for-hadoop-2.0.0-alpha-jar-with-dependencies.jar \ org.apache.giraph.benchmark.PageRankBenchmark \ -Dgiraph.zkList=:2181 \ -e 1 -s 3 -v -V 50 -w 1 … 14/08/01 11:42:44 INFO mapred.JobClient: Job complete: job_201407291058_0015 … (full output is below) GiraphRunner SimpleShortestPathsVertex也运行正常 $ hadoop jar $GIRAPH_HOME/giraph-examples/target/giraph-examples-1.0.0-for-hadoop-2.0.0-alpha-jar-with-dependencies.jar \ org.apache.giraph.GiraphRunner \ -Dgiraph.zkList=:2181 \ org.apache.giraph.examples.SimpleShortestPathsVertex \ […]

如何使用JSP页面中的参数运行java类?

我之前写过一个从bash文件执行的java类,现在我需要允许它使用Javascript / HTML按钮从JSP页面执行,我想知道我该怎么做? 首先,我的课看起来像这样: public class Sync { public static void main(String[] args) { //my content here } } 此Sync类已从bash脚本运行,如下所示: cd /root/tomcat/webapps/project/WEB-INF/classes/ echo “Executing first part…” /usr/local/java/bin/java classes/CLRSyncCLI 120.0.0.1 up false Y ${IPS[@]} echo “Executing second part…” /usr/local/java/bin/java classes/CLRSyncCLI 127.0.0.1 down false Y ${IPS[@]} 请注意:classes是TomCat Web服务器中所有已编译的Java类的目录。 现在在jsp页面中我需要这样的东西: 如何通过单击按钮两次运行此参数类及其参数两次,并显示该类已使用消息执行。

在cygwin中将多个jar文件设置为classpath

我在c:\cygwin\programs\x.java ,它使用y.jar和z.jar ,它们也在文件夹c:\cygwin\programs 。 在Windows中: c:cygwin\programs>javac -classpath c:\cygwin\programs\y.jar;c:\cygwin\programs\z.jar x.java 没有错误。 在cygwin (1) $javac -classpath c\:/cygwin/programs/y.jar;c\:/cygwin/programs/z.jar x.java Errors: $’PK\003\004′: Command not found. (2) $javac -classpath c:\cygwin\programs\y.jar;c:\cygwin\programs\z.jar x.java Errors: -bash command Command not found. (3) $javac -classpath ‘c:/cygwin/programs/y.jar;c:/cygwin/programs/z.jar’ x.java No error. 为什么在(1),(2)的情况下给出错误…

自定义Java PMD规则:找不到CustomRule类

我正在尝试用Java编写自定义PMD规则。 我创建了一个自定义规则集,如下所示: My custom rules Custom description 3 我使用这个Java类调用pmd.bat : package mwe; import java.io.IOException; import java.io.InputStream; import java.util.Scanner; public class PmdStarter { public static void main(String[] args) { callPmd(); } public static void callPmd() { String pmdPath = “pmd-src-5.0.5/bin/pmd.bat”; String checkThisCode = “checkThisCode/”; String customRuleSet = “pmd-src-5.0.5/src/main/resources/rulesets/java/customRules.xml”; String[] command = { pmdPath, “-dir”, checkThisCode, “-rulesets”, […]