我有一个应用程序,我正在尝试将其包装到jar中以便于部署.当作为一组可从CLASSPATH访问的类运行时,应用程序编译并运行正常(在Windows cmd窗口中).但是当我在我的类中运行并尝试在同一cmd窗口中使用java 1.6运行它时,我开始获得异常:
C:\dev\myapp\src\common\datagen>C:/apps/jdk1.6.0_07/bin/java.exe -classpath C:\myapp\libs\commons -logging-1.1.jar -server -jar DataGen.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at com.example.myapp.fomc.common.datagen.DataGenerationTest.<clinit>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
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)
... 1 more
Run Code Online (Sandbox Code Playgroud)
有趣的是,违规的LogFactory似乎是在commons-logging-1.1.jar中,它位于指定的类路径中.jar文件(是的,它确实存在):
C:\dev\myapp\src\common\datagen>dir C:\myapp\libs\commons-logging-1.1.jar
Volume in drive C is Local Disk
Volume Serial Number is ECCD-A6A7
Directory of C:\myapp\libs
12/11/2007 11:46 AM 52,915 commons-logging-1.1.jar
1 File(s) 52,915 bytes
0 Dir(s) 10,956,947,456 bytes free
Run Code Online (Sandbox Code Playgroud)
commons-logging-1.1.jar文件的内容:
C:\dev\myapp\src\common\datagen>jar -tf C:\myapp\libs\commons-logging-1.1.jar
META-INF/
META-INF/MANIFEST.MF
org/ …Run Code Online (Sandbox Code Playgroud) 这可能是一个非常愚蠢的问题。我刚刚通过将 .jar 文件添加到类路径等等,学会了如何在 Java 中使用外部库,但是您究竟将 .jar 文件保存在哪里?在有关将 .jar 文件添加到类路径的视频教程中,程序员只是将 .jar 文件保存在他的下载文件夹中。那么你可以把文件放在任何地方吗?或者是否有关于您将我应该遵守的库文件保存在何处的一般范例?
我从不工作JMS.最近我下载Activemq和从没有改变端口61616到61617所有conf/activemq-*.xmlfiles.I在浏览器中运行的命令提示符,然后打开控制台页面下面的命令.
C:\Users\Infratab Bangalore\Desktop\Queueing\apache-activemq-5.8.0\bin>activemq
Run Code Online (Sandbox Code Playgroud)

现在我想给使用Java代码的消息JMS来Activemq.对于这一点,我写了下面的代码.并使用Apache Tomcat server.it运行我的代码
此代码在Eclipse中实现.
package PackageName;
import java.io.IOException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageProducer extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
try {
//created ConnectionFactory object for creating connection
ConnectionFactory factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://localhost:61617");
//Establish the connection …Run Code Online (Sandbox Code Playgroud)