java命令行下运行class文件

2010年2月15日 admin 没有评论

今天碰到了一个很变态的问题,写了一个很简单的HelloWord.java,内容如下:
package com.yanjiuyanjiu;

public class HelloWorld {
public static void main(String args[]) {
System.out.println(“Hello World!”);
}
}

在eclipse中运行是可以的,但是在命令行下运行总是失败。我的工程位置为 d:\workspace\HelloWorld\。

尝试了很多次,如下

d:\workspace\HelloWorld\bin\com\yanjiuyanjiu\>java HelloWorld

Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld.  Program will exit.
Exception in thread “main”

d:\workspace\HelloWorld\bin\com\yanjiuyanjiu\>java -classpath .; HelloWorld
Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld.  Program will exit.
Exception in thread “main”

d:\workspace\HelloWorld\bin\com\yanjiuyanjiu\>cd..

d:\workspace\HelloWorld\bin\com\>cd..

d:\workspace\HelloWorld\bin\>java -classpath .; com/yanjiuyanjiu/HelloWorld    只有这个成功

Hello World!

d:\workspace\HelloWorld\bin\>java -classpath .; com\yanjiuyanjiu\HelloWorld    换了个斜杠就不行了

Exception in thread “main” java.lang.NoClassDefFoundError: com\yanjiuyanjiu\HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com\yanjiuyanjiu\HelloWorld.  Program will exit.
Exception in thread “main”

d:\workspace\HelloWorld\bin\>java -classpath ./com/yanjiuyanjiu/; HelloWorld

Exception in thread “main”java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld.  Program will exit.
Exception in thread “main”

在网上搜索了大半天,大部分说是环境 变量,classpath或JDK 版本的问题,还有执行时文件名 class后缀不要。我一一试过,都没有解决。最后无意中换了一下命令符的位置,成功了。总结如下:
1. 环境变量,CLASSPATH当然要设置好,执行时不要带class后缀;
2. 路径中的斜杠用“/”而不是“\”;
3. 命令符的当前目录要在包的起点。比如这里应该在 d:\workspace\HelloWorld\bin\>,如果在 d:\workspace\HelloWorld\bin\com\yanjiuyanjiu\>,反而不行,有点“近水楼台不得月”的意思,不知 道为什么,还请高手解释一下。

分类: 语言与算法 标签:

godaddy 域名 301 重定向

2009年7月21日 admin 没有评论

为了将域名不带 WWW 的前缀指向带前缀的,一般使用 301重定向,操作步骤如下:

1. 将如下代码粘贴在记事本,保存为 .htaccess :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^yanjiuyanjiu.com [NC]
RewriteRule ^(.*)$ http://www.yanjiuyanjiu.com/$1 [L,R=301]

2. 登录 godaddy,开启免费空间,这个要耗费一点时间。

3. 等空间开启了,就把这个文件上传到 空间个目录下。

4.  等待一会儿,再次访问 yanjiuyanjiu.com ,会自动跳转到 www.yanjiuyanjiu.com

注意:有两个地方需要耐心等待一段时间,一个是开启免费空间,另一个是上传 ..htaccess 文件之后。

 

参考资料通过.htaccess实现GoDaddy域名Apache 301重定向

.htaccess和500 Internal Server Error的解决之道!

 

 

分类: 互联网 标签:

godaddy 优惠码,godaddy couppons

2009年4月22日 admin 没有评论
优惠码 优惠性质 过期时间
CJC695DOM $7.69 注册 .com 永不
goaz2001aa $7.19 注册 .com 未知
60NCSCOM $7.19 注册 .com 2009年5月2日
分类: 互联网 标签:

在Visual Studio 下编译 sqlite3

2009年4月14日 admin 没有评论

首先,sqlite 官方已经有预编译好的DLL下载,如果你不需要特别优化的版本,直接下载官网上的DLL即可。你可以在下载 页面的 “Precompiled Binaries For Windows” 可以找到。
不过你想编译出自己的版本,比如添加优化参数后编译,debug版,或进行一些定制(例如官网这里 有一些预编译宏,允许你定制自己的sqlite),那么你就需要自己编译了。

首先在下载源代码,在页面的第一行就是,如 sqlite-amalgamation-3_6_12.zip ,接着下载编译好的DLL,我们主要是需要这里面的一个 sqlite3.def 文件,因为源代码里没有。一般下拉到  “Precompiled Binaries For Windows”  就可以看到,例如 sqlitedll-3_6_12.zip 。有了这两个压缩包就可以了。

首 先解压 sqlite-amalgamation-3_6_12.zip 到文件夹 sqlite3\,会得到  sqlite3.c,sqlite3.h,sqlite3ext.h 三个文件,然后解压 sqlitedll-3_6_12.zip ,把 sqlite3.def 移动到 sqlite3\ 下面。

打开 visual studio,新建一个空的dll工程,工程名为sqlite3,这样是为了能直接生成名为sqlite3.dll 的dll。然后sqlite3\  下的4个文件文件夹移动到此工程目录下,即与 sqlite3.vcproj 在同一级。
将 sqlite3.c 添加到工程,具体做法是右击“源文件”,选择“添加->现有项”,浏览到sqlite3.c即可。如下图所示。

undefined

阅读全文…

分类: 开源工具 标签:

qt 4.5 与visual studio 集成

2009年4月9日 admin 没有评论

本文主要讲述将Qt 4.5Visual Studio 2008集成,同样适用于Visual Studio 2005, 2003

Qt 4.5 虽然新增了LGPL协议,但这也阻碍了我们在VS中使用Qt。因为免费开源的版本只提供了GCC编译好的二进制库,而没有VC编译好的二进制库,只有商业版本才有VS编译好的针对WindowsDLLlib等二进制库(恩,可以理解)。

再者,VC编译器比GCC 还是要强劲很多,并且调试器异常强大。Qt Creator虽然很酷,目前还很粗糙。很多人也更为熟悉VS的界面。

下面我们就自己用VS编译出二进制库,然后就可以跟商业版一样了。

不过,你也可以直接google“qt 4.5 编译好”,找到很多人已经编译好的二进制库,下载下来直接用。下面的内容可以不看了^_^ 阅读全文…

分类: 开源工具 标签: