java —cp 提示mc找不到java文件文件

fluagen 的BLOG
用户名:fluagen
文章数:193
评论数:62
访问量:785446
注册日期:
阅读量:1845
阅读量:46490
51CTO推荐博文
Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件。它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数据,没有必要使用数据库文件来保存,而使用一般的文本文件来保存,如果是通过File直接保存的话,可能在存储和读取上都不是很方便,但如果保存为Properties文件就不一样了,属性文件都有键值对应的,在JAVA的包中,有提供专门的操作属性文件的类。这个类就是 java.uitl.Properties类,由于Properties类是一个集合类,所以,Properties会将属性以集合的方式读写。
注意:下面的代码中对于抛出的异常都未采取捕获的方式,自己在编写程序的时候一定要注意捕获异常,推荐将捕获的异常处理掉。
Properties类继承字Hashtable类,采用键值对应的存储方式,在使用Properties类管理属性文件时有什么方便的呢?Properties类有专门的读写方法来读写Properties属性文件,不用担心读写的格式问题,只要为Properties类提供一个读写流即可。Properties用于读写属性文件的方法分别是:
&&&public&void&load(InputStream&inStream)&throws&IOException&{}& &&
&&&public&void&store(OutputStream&out,&String&comments)&throws&IOException&{}&&&
//读取属性文件流的方法
public void load(InputStream inStream) throws IOException {}
//写属性文件流的方法
public void store(OutputStream out, String comments) throws IOException {}
首先,我们来看看如何从一个属性文件中读取属性。
假定我们已经新建了一个属性文件,名为prop.properties,内容如下:
sitename=abcjava& &&
&&&siteurl=&&&
sitename=abcjava
我们要做的第一步就是要将文件读取到Properties类对象中,由于load有一个参数是InputStream,所以我们可以用 InputStream的子类FileInputStream将属性文件读取到Properties对象中,知道prop.properties的路径,我们就用FileInputStream(String name)构造函数:
Properties&prop&=&new&Properties();&&
&&&FileInputStream&fis&=&new&FileInputStream(&prop.properties&);&&
&&&prop.load(fis);&&
Properties prop = new Properties();//属性集合对象
FileInputStream fis = new FileInputStream(&prop.properties&);//属性文件流
prop.load(fis);//将属性文件流装载到Properties对象中
接下来我们将做的事情就是如果读取一个属性,因为属性文件中的每一行都是一个键值对应,所以每一行都代表了一个属性对象,每一行都将以键和值的关系存储到Properties中,Properties类提供了getProperty(String key)方法用来通过键名读取键值,当key在属性集合中找不到时又想为key在程序中赋予一个值时可以使用public String getProperty(String key, String defaultValue)方法,这个方法的意思就是用指定的键在属性列表中搜索属性。如果在属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回默认值变量:
&&&System.out.println(&获取属性值:sitename=&&+&prop.getProperty(&sitename&));& &&
&&&System.out.println(&获取属性值:country=&&+&prop.getProperty(&country&,&&中国&));&&&
//获取属性值,sitename已在文件中定义
System.out.println(&获取属性值:sitename=& + prop.getProperty(&sitename&));
//获取属性值,country未在文件中定义,将在此程序中返回一个默认值,但并不修改属性文件
System.out.println(&获取属性值:country=& + prop.getProperty(&country&, &中国&));
在知道怎么读取属性文件之后我们还有一个很重要的事情就是要修改和添加新的属性到属性文件,这里就是使用public void store(OutputStream out, String comments)方法,这个方法是将属性集合写到一个OutputStream流中,同InputStream流一样,这里同样是使用其子类 FileOutputStream(String name),这里就不多说了。
在保存属性集合到文件之前,我们还有一件事情就是如何修改和添加新的属性到属性集合,这里使用了一个方法就是setProperty(String key, String value),这个方法就是当属性集合中存在指定的key时,就修改这个key的值,如果不存在,就新建一个key,同样是通过键值关系保存的,但值得注意的是,Properties类继承自Hashtable,所以也可以用Hashtable的put和putAll方法保存,但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty 方法。如果在&有危险&的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。那好,下面我们就来看看修改、添加和保存属性的程序:
//修改sitename的属性值
prop.setProperty(&sitename&, &Boxcode&);
//添加一个新的属性studio
prop.setProperty(&studio&, &Boxcode Studio&);
//文件输出流
FileOutputStream fos = new FileOutputStream(&prop.properties&);
//将Properties集合保存到流中
prop.store(fos, &Copyright (c) Boxcode Studio&);
fos.close();//关闭流
接下就是整个程序的源代码:
import&java.io.FileInputS &&
import&java.io.FileOutputS &&
import&java.util.P &&
public&class&PropertyEditor&{ &&
&&&&public&static&void&main(String[]&args)&throws&Exception&{ &&
&&&&&&&&Properties&prop&=&new&Properties();&&
&&&&&&&&FileInputStream&fis&=&new&FileInputStream(&prop.properties&);&&
&&&&&&&&prop.load(fis);&&
&&&&&&&&fis.close();&&
&&&&&&&&&&
&&&&&&&&System.out.println(&获取属性值:sitename=&&+&prop.getProperty(&sitename&)); &&
&&&&&&&&&&
&&&&&&&&System.out.println(&获取属性值:country=&&+&prop.getProperty(&country&,&&中国&)); &&
&&&&&&&&&&
&&&&&&&&prop.setProperty(&sitename&,&&Boxcode&); &&
&&&&&&&&&&
&&&&&&&&prop.setProperty(&studio&,&&Boxcode&Studio&); &&
&&&&&&&&&&
&&&&&&&&FileOutputStream&fos&=&new&FileOutputStream(&prop.properties&); &&
&&&&&&&&&&
&&&&&&&&prop.store(fos,&&Copyright&(c)&Boxcode&Studio&); &&
&&&&&&&&fos.close();&&
import java.io.FileInputS
import java.io.FileOutputS
import java.util.P
public class PropertyEditor {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();// 属性集合对象
FileInputStream fis = new FileInputStream(&prop.properties&);// 属性文件输入流
prop.load(fis);// 将属性文件流装载到Properties对象中
fis.close();// 关闭流
// 获取属性值,sitename已在文件中定义
System.out.println(&获取属性值:sitename=& + prop.getProperty(&sitename&));
// 获取属性值,country未在文件中定义,将在此程序中返回一个默认值,但并不修改属性文件
System.out.println(&获取属性值:country=& + prop.getProperty(&country&, &中国&));
// 修改sitename的属性值
prop.setProperty(&sitename&, &Boxcode&);
// 添加一个新的属性studio
prop.setProperty(&studio&, &Boxcode Studio&);
// 文件输出流
FileOutputStream fos = new FileOutputStream(&prop.properties&);
// 将Properties集合保存到流中
prop.store(fos, &Copyright (c) Boxcode Studio&);
fos.close();// 关闭流
在我们知道如何读写一个属性文件之后,我们仍然还有很多需要注意的问题,因为load和store方法都是按照ISO-8859-1的编码方式读写属性流文件的,而ILatin1 的字符和某些特殊字符,而对于非Latin1 的字符和某些特殊字符,则要使用与字符和字符串字面值所用的类似转义序列,以值和元素的形式来表示它们。所以当我们在处理中文时,不可以在直接修改属性文件时,将中文的值赋予给属性,而是要在JAVA程序中通过setProperty方法给属性赋予中文的值,因为这样store会将中文转换成 unicode码,在读取时系统会将读取到的unicode码按系统的编码打印出来,对于中文系统,通常是GBK码,这样中文才能够正常显示。
了这篇文章
类别:┆阅读(0)┆评论(0)
10:28:26 09:31:08 12:52:51 15:16:04java&java的类路径讲解&-cp用法
一、ClassPath
java 是通过 java虚拟机来解释运行的, 也就是通过 java 命令。 javac 编译生成的
.class文件就是虚拟机要执行的代码, 称之为字节码(bytecode), 虚拟机通过 classloader来装载这些字节码,
也就是通常意义上的类. 这里就有一个问题, classloader 从哪里知道 java 本身的类库及用户自己的类在什么地方呢?
或者有着缺省值(当前路径).
实际上 java 虚拟机是由 java luncher 初始化的, 也就是 java (或 java.exe)这个程序来做的.
虚拟机按以下顺序搜索并装载所有需要的类:
1, 引导类: 组成 java 平台的类, 包含 rt.jar 和 i18n.jar 中的类.
2, 扩展类: 使用 java 扩展机制的类, 都是位于扩展目录($JAVA_HOME/jre/lib/ext)
中的 .jar 档案包.
3, 用户类: 开发者定义的类或者没有使用 java 扩展机制的第三方产品. 你必须在
命令行中使用 -classpath 选项或者使用 CLASSPATH 环境变量来确定这些类的位置
那么到底该怎么做呢? 用户类路径就是一些包含类文件的目录, .jar, .zip 文件的列表, 至于类具体怎么找, 因为牵扯到
package 的问题, 下面将会说到, 暂时可认为只要包含了这个类就算找到了这个类. 根据平台的不同分隔符略有不同, 类 unix
的系统基本上都是 ":", windows 多是 ";".
其可能的来源是:&&&&
* ".", 即当前目录, 这个是缺省值.
* CLASSPATH 环境变量, 一旦设置, 将缺省值覆盖
* 命令行参数 -cp 或者 -classpath, 一旦指定, 将上两者覆盖.
* 由 -jar 参数指定的 .jar 档案包, 就把所有其他的值覆盖, 所有的类都来自这个指定的档案包中. 由于生成可执行的
.jar 文件, 还需要其他一些知识, 比如 package, 还有特定的配置文件, 本文的最后会提到. 可先看看 jdk
自带的一些例子.
我们举个 HelloWorld 的例子来说明. 先做以下假设:
* 当前目录是 /HelloWorld (或 c:\HelloWorld, 以后都使用前一个)
* jdk 版本为 1.2.2 (linux 下的)
* PATH 环境变量设置正确. (这样可以在任何目录下都可以使用工具)
* 文件是 HelloWorld.java, 内容是:
public class HelloWorld
public static void main(String[] args)
&&&&&&&&&&&&
System.out.println("Hello World!\n");
&&&&&&&&&&&&
System.exit(0);
首先这个文件一定要写对, 如果对 c 熟悉的话, 很有可能写成这样:
public static void main(int argc, String[] argv)
这样是不对的, 不信可以试一试. 由于手头没有 java 的规范, 所以作如下猜想: java 的 application 程序,
必须以 public static void main(String[])开始, 其他不一样的都不行.
到现在为止, 我们设置方面只设置了 PATH.
1, 当前路径就是指你的 .class 文件在当前目录下,
$ javac HelloWorld.java&&
//这一步不会有多大问题,
HelloWorld&&&&&&&&
// 这一步可能就会有问题.
如果出了象开头那样的问题, 首先确定不是由于敲错命令而出错. 如果没有敲错命令,
那么接着做:
$ echo $CLASSPATH
c:\HelloWorld&echo %CLASSPATH%
看看 CLASSPATH 环境变量是否设置了, 如果设置了, 那么用以下命令:
$ CLASSPATH=
c:\HelloWorld& set CLASSPATH=
来使它为空, 然后重新运行. 这次用户类路径缺省的是 ".", 所以应该不会有相同的问题了. 还有一个方法就是把 "." 加入到
CLASSPATH 中.
[/]$ CLASSPATH=$CLASSPATH:.
c:\HelloWorld& set CLASSPATH=%CLASSPATH%;.
你的程序需要第三方的类库支持, 而且比较常用, 就可以采用此种方法.比如常
用的数据库驱动程序, 写 servlet 需要的 servlet 包等等. 设置方法就是在环境变量中
加入 CLASSPATH. 然后就可以直接编译运行了. 还是以 HelloWorld 为例, 比如你想在根
目录中运行它, 那么你直接在根目录下执行
$ java HelloWorld
c:\&java HelloWorld
这样肯定会出错, 如果你的 CLASSPATH 没有改动的话. 我想大家应该知道为什么错了吧, 那么怎么改呢? 前面说过,
用户类路径就是一些包含你所需要的类的目录, .jar 档案包, .zip 包. 现在没有生成包, 所以只好把
HelloWorld.class 所在的目录加到 CLASSPATH了, 根据前面的做法, 再运行一次, 看看, 呵呵, 成功了,
换个路径, 又成功了!! 不仅仅可以直接运行其中的类, 当你要 import 其中的某些类时, 同样处理 不知道你想到没有,
随着你的系统的不断的扩充, (当然了, 都是一些需要 java 的东西)
如果都加到这个环境变量里, 那这个变量会越来越臃肿, 虽然环境变量空间可以开很大, 总觉得有些不舒服. 看看下面一个方法.
3, 在命令行参数中指明 classpath.
还是和上面相同的目标, 在任何目录下执行 HelloWorld, 用这个方法怎么实现呢?
[/]$ java -cp /HelloWorld HelloWorld
c:\&java -cp c:\HelloWorld HelloWorld
就可以了. 这是这种方法的最简单的应用了. 当你使用了另外的包的时候, 还可以采用
这种方法. 例如:
$ javac -classpath aPath/aPackage.jar:. myJava.java
$ java&& -cp aPath/aPackage.jar:.
c:\& javac -classpath aPath\aPackage..
myJava.java
c:\& java&& -cp
aPath\aPackage.. myJava
这种方法也有一个不方便的的地方就是当第三方包所在的路径较长或者需要两个以上包
的时候, 每次编译运行都要写很长, 非常不方便, 这时候可以写脚本来解决. 比如一个例子:
compile&& (文件, 权限改为可执行,
$ cat compile
---------------------------
#!/bin/bash
javac -classpath
aPath\aPackage.jar:anotherPath\anotherPackage.jar:. myJav
---------------------------
run (文件, 权限改为可执行, 当前目录)
---------------------------
#!/bin/bash
java -cp aPath\aPackage.jar:anotherPath\anotherPackage.jar:.
---------------------------
compile.bat
c:\HelloWorld& type compile.bat
-------------------------
javac -classpath
aPath\aPackage.jar:anotherPath\anotherPackage.jar:. myJav
-------------------------
c:\HelloWorld& type run.bat
------------------------
java -cp aPath\aPackage.jar:anotherPath\anotherPackage.jar:.
下面是一些需要注意的问题:
1, 如果类路径中需要用到 .jar 文件, 必须把 jar 文件的文件名放入类路径, 而不是其所在的目录.
2, 在任何时候, 类名必须带有完全的包名,
3, "." 当前目录最好在你的类路径中.
下面是一些常见的编译和运行的模式.
4. To compile HelloWorld.java app in the default package in
C:\MyDir, use&& CD \MyDir
&&&&&&&&&&&&
C:\jdk1.3\bin\Javac.exe -classpath . HelloWorld.java
5. To run a HelloWorld.class app, in the default package in
C:\jdk1.3\bin\Java.exe -classpath . HelloWorld
6. To run a HelloWorld.class app, in the default package in a jar
in C:\MyDir,
&&&&&&&&&&&&
C:\jdk1.3\bin\Java.exe -classpath HelloWorld.jar HelloWorld
7. To compile a HelloWorld.java app in C:\MyPackage, in package
MyPackage,
&&&&&&&&&&&&
C:\jdk1.3\bin\Javac.exe -classpath .
MyPackage\HelloWorld.java
8. To run a HelloWorld.class app in C:\MyPackage, in package
MyPackage,
&&&&&&&&&&&&
C:\jdk1.3\bin\Java.exe -classpath . MyPackage.HelloWorld
9. To run a HelloWorld.class app in C:\MyPackage, in a jar in
package MyPackage,
&&&&&&&&&&&&
C:\jdk1.3\bin\Java.exe -classpath HelloWorld.jar
MyPackage.HelloWorld
(注: default package 指的是在程序中不指定任何包).
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。我java 编译成功, 运行程序的时候却出现 找不到或无法加载主类的错误。-中国学网-中国IT综合门户网站
> 我java 编译成功, 运行程序的时候却出现 找不到或无法加载主类的错误。
我java 编译成功, 运行程序的时候却出现 找不到或无法加载主类的错误。
转载 编辑:李强
为了帮助网友解决“我java 编译成功, 运行程序的时候却”相关的问题,中国学网通过互联网对“我java 编译成功, 运行程序的时候却”相关的解决方案进行了整理,用户详细问题包括:我环境变量设置的没错啊。 我用NetBeans打开一个项目的时候可以编译 运行。但是 我直接命令行运行的时候就报上面的错误。,具体解决方案如下:解决方案1:b&#92.c,例如你的类为 a\c\%CLASSPATH%Test,你要到a的父目录.java 假定你的包名为 a手工运行时,需要正确设置java 的 classpath..b, 而且类名要全称.b.c;其他的jar库路径,运行输入java -cp 解决方案2:大小写千万不能错、最后的java helloworld时、设置环境变量classpath时一定要加上一个“,你可以从两个方面去做1我今天也遇到这样的情况,一定要注意拼写,代表是当前路径2.,否则还是不行;”解决方案3:把你的环境变量配置贴出来看看解决方案4:有可能是你的环境变量的问题通过对数据库的索引,我们还为您准备了:问:我环境变量设置的没错埃 我用NetBeans打开一个项目的时候可以编译 运行...答:手工运行时,需要正确设置java 的 classpath, 而且类名要全称,例如你的类为 a\b\c\Test.java 假定你的包名为 a.b.c, 你要到a的父目录,运行输入 java -cp .;其他的jar库路径;%CLASSPATH% a.b.c.Test===========================================问:编写了个简单的java程序, public class HelloJava{ public static void...答:另外我想知道CLASSPATH的作用, --当你执行java xxx的时候,它就要在classpath指定的目录下查找看是否有xxx这个类 怎样才能在编译时不用在输入文件目录。CLASSPATH是不是设置默认目录的。 --在命令提示窗口中输入 set classpath=.;%classpath%即...===========================================问:事本写的Java程序能通过编译但是运行的时候,直接弹出记事本是怎么回事...答:你后面的那个命令是想干什么呢? 是想运行编译后的文件么? 那么应该是 java DengLuJieMian 你直接访问了DengLuJieMian.java文件, 系统当然用默认的记事本打开java源文件了===========================================问:运行的时候报: Exception in thread "main "java.lang.NoClassDefFound...答:可能是你的环境变量设置的问题。 具体设置方法:(XP系统) 我的电脑--〉右键“属性”--〉高级--〉环境变量-〉添加系统变量path,变量值为你的jdk安装目录的bin路径===========================================问:java程序编译成功但是运行不成功是怎么回事?答:这种事情当然经常发生啦。。。。 编译只是静态检查。。。。。 如果你的程序存在 运行时错误的话。 例如: RuntimeException的话,当然编译时检查不出来啦。 具体问题具体分析,没有源代码,是无法发现到底那里错误了===========================================问:java程序编译成功但是运行不成功是怎么回事?答:找不到类TestDaoInsert,看看类名与文件名是否一致,或者看有没有这个类===========================================问:所有程序都一样,编译和运行都没问题,就是不生成.class文件答:能够编译并运行,说明肯定生成了class文件。 问题可能的原因有两个: 1、你没有找到生成.class文件的那个正确的路径 2、系统设置问题,文件没有显示扩展名===========================================问:所有程序都一样,编译和运行都没问题,就是不生成.class文件答:你先运行下JAVA在提示符里,如果他出错的话那就是环境变量配置错了,然后看看你的类里面有没有main这个,然后看看你的类名和文件名一样不, 如果还是错的话你在HI我.===========================================问:java.util.NoSuchElementException at java.util.Scanner.throwFor(Scan...答:你把ReflectList.ReadBus(ReflectList.java:17)这段代码贴出来看下 ReflectList类第17行附件的代码贴出来===========================================亲,以前是否装过JDK。现在是第N次的JDK。是的话,删除C盘windows下的java.exe,win7的是在system32目录下。===========================================这种事情当然经常发生啦。。。。 编译只是静态检查。。。。。 如果你的程序存在 运行时错误的话。 例如: RuntimeException的话,当然编译时检查不出来啦。 具体问题...===========================================可能是你的环境变量设置的问题。 具体设置方法:(XP系统) 我的电脑--〉右键"属性"--〉高级--〉环境变量-〉添加系统变量path,变量值为你的jdk安装目录的bin路径===========================================import javax.swing.*; import java.awt.*; public class jiafa { public static void main(String args[]) { jia jia1=new jia();//里jiajiafa jia1.xianshi(); } } class jia { public void...===========================================编译后会在该文件所在的目录中生成一个 "类名.class"的文件。之后,可以通过java 类名 这个命令来执行这个java程序 现在这个界面应该是双击了Hello.java文件后的结果。运行...=========================================== 数组越界了。最好把代码贴出来看下 数组的,上界是从0开始并不是从1开始的改成btn[0]...btn[4]就可以了=========================================== 找不到类TestDaoInsert,看看类名与文件名是否一致,或者看有没有这个类===========================================找一个编译工具吧!推荐你用JCreator Pro即可!网上搜一下就能找得到!安装后它会自动查找JDK安装路径然后编写代码后直接点编译,再点运行代码没错,并且无异常的情况下,绝...===========================================找一个编译工具吧! 推荐你用JCreator Pro即可! 网上搜一下就能找得到! 安装后它会自动查找JDK安装路径 然后编写代码后直接点编译,再点运行 代码没错,并且无异...===========================================没注意看你的代码,至少逻辑上是正确的。我测试了下,在DOS下运行正常。 但是你说你编译成功,但是运行错误,估计你的classpath配置错了,虚拟机没有找到类而已。 classpat...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助每日一生信--blast2go本地化(终极版)
充斥着各种绝望,无知若我,菜鸟若我,经过一个星期的折腾,总算把blast2go本地化了,前面也说到,本地化的目的是为了解决我&8000bp不能上传的问题,同时也能提速(我服务器还算可以,所以这个问题不算问题)。
本人的系统是Ubuntu12.04LST,确切点来说是bio-linux(搞生物分析的神器,具体安装步骤见我之前博文.cn/s/blog_i82m.html),同时我也是有root权限的。由于官网上的内容过时,同时对于一个菜鸟来说有的地方不好理解,而有的帖子针对的只是自己电脑的情况,所以结合自己痛苦经历以及参照各种大神的帖子,做此博文。
1,安装java
&&Java运行环境:一定要Oracle
&JDK (6、7都行),不要用OpenJDK,否则无法运行b2g4pipe!
& & java -version
& 你可以看到自己java的版本
& & update-alternatives
&--display java &检查java安装情况
由于版权等问题,我的系统就是默认的自带的OpenJDK,所以,我需要下载一个Oracle
JDK。我选择的是jdk-7u45-linux-x64.tar.gz(从/technetwork/java/javase/downloads/jdk7-downloads-1880260.html下载最新jdk源码)
解压到/usr/java目录
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/java
& 注意版本不同的话就修改;
同时我在usr下新建了一个文件夹cd /usr ,然后sudo mkdir java)
如果提示找不到该文件,可以cd到你放jdk的文件夹,或在jdk前面加上他的路径
& & 1.2建立软连接
&cd /usr/java
&sudo ln -s jdk1.7.0_45 latest
&sudo ln -s /usr/java/latest
&然后通过ls -lh /usr/java/
&结果如下:
& &总用量 4
&lrwxrwxrwx 1 root root & 16 Nov
&4 22:22 default -& /usr/java/latest
&drwxr-xr-x 8 uucp &143 4096 Oct
&8 21:03 jdk1.7.0_45
&lrwxrwxrwx 1 root root & 11 Nov
&4 22:00 latest -& jdk1.7.0_45
&注:-s是软连接的标志,
&为什么加软连接,我得到现在也没搞明白
修改配置环境变量
&&在/etc/profile或者/etc/bashrc中加入下列几行:
& & &export
JAVA_HOME=/usr/java/latest
& & &export
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
& & &export
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
& &注:我的/etc/bashr木有,所以我sudo
vi&/etc/profile
& & & 使其生效:
&source /etc/profile
&注:为什么这个时候我出现的$符号,不明白
配置系统默认java&
update-alternatives --install /usr/bin/java java
/usr/java/latest/jre/bin/java
update-alternatives --config java
&选择你安装的版本即可。
&同理可以设置其它java命令如javac, javaw ,只需要换掉java就可以了。
& & 1.5测试
&java -version
修改mysql的datadir
&mysql默认的datadir=var/lib/mysql,mysql大量的数据(&50G)会产生在var/lib/mysql,mysql这个文件夹里面,基于此,我想把他放在一个稍微大点的盘中去&
& &具体内容见我之前博文
.cn/s/blog_iv3w.html
3,下载数据
local_b2g_db.zip
&/public-data/local_b2g_db.zip
godatabase: & &
http://archive.geneontology.org/latest-full/&
gene_info.gz: & &
&ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene_info.gz
gene2accession.gz:
ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene2accession.gz
idmapping.tb.gz:
ftp://ftp.pir.georgetown.edu/databases/idmapping/idmapping.tb.gz
&注:godatabase目录下对应的go_XXXX-assocdb-data.gz,但是官网上给的lateset数据库201310那个是有问题的,你看上面标注的是4.1G,可下下来的只有2G,不可用,我下载的是201307(下载地址:http://archive.geneontology.org/full//)
& & & 你可以通过
&wget &+网址 &
&下载后解压缩,我所有解压缩的文件都放在了/sam下面
执行b2gdb.sql用以创建b2gdb和一些Table:
mysql -h localhost -uroot -proot &
/sam/local_b2g_db/b2gdb.sql(b2gdb.sql在哪,前面的路径指哪)
此时可以通过下面命令查看已经创建了的数据库:
mysql -uroot -proot 并回车
mysql&(输入的时候是;的,请注意)
可以看到b2gdb已经被创建。注意-p后面跟的是密码,密码不对导致的是error1045
创建数据库用户"blast2go":
mysql -h localhost -uroot -proot -e "GRANT ALL ON b2gdb.* TO
'blast2go'@'localhost' IDENTIFIED BY 'blast4it';"
mysql -h localhost -uroot -proot -e "FLUSH PRIVILEGES;"
导入上述已下载并解压了的数据库:
为了保证后面步骤的简约,建议先进入数据库存放的文件夹,比如我的解压后的数据位于"/sam",
&mysql -s -h localhost -uroot -proot b2gdb
& go_201307-assocdb-data
(耗时约7小时,产生55G文件)
mmysql -h localhost -uroot -proot b2gdb -e "LOAD DATA LOCAL
INFILE '/sam/gene2accession' INTO TABLE gene2accession FIELDS
TERMINATED BY '\t' LINES TERMINATED BY '\n';"
&出现error1148
& sudo vi /etc/f
& 修改如下成如下 &
& #no-auto-rehash # faster start of mysql but
no tab completition
& &local-infile
& 终端输入: mysql --local-infile -uroot
再重新输入上面命令(耗时约1小时,文件保持55G)
mysql -h localhost -uroot -proot b2gdb b2gdb -e "LOAD DATA
LOCAL INFILE '/sam/gene_info' INTO TABLE gene_info FIELDS
TERMINATED BY '\t' LINES TERMINATED BY '\n';"
(耗时约10分钟,文件保持55G)
java -cp .:mysql-connector-java-5.0.8-bin.jar: ImportIdMapping
/sam/idmapping.tb localhost b2gdb blast2go blast4it
cd /sam/b2g4pipe
sam@sam-Precision-WorkStation-Tpipe] java -cp
blast2go.jar:ext/mysql-connector-java-3.0.11-stable-bin.jar
es.blast2go.prog.util.ImportPIR /sam/idmapping.tb localhost b2gdb
root sam TRUE
Starting to import /sam/idmapping.tb to b2gdb@localhost with
Open database connection to database b2gdb on localhost as
root with password starts with sam
Open database connection to database b2gdb on localhost as
root with password starts with sam
gi-uniprot mappings to the DB.
gi-uniprot mappings to the DB.
Import of gi-uniprot mapping finished
如果是出现:
Database or network connection (timeout) error for:
Database or network connection (timeout) error for:
Import gi-uniprot mapping: Could not connect to DB
Could not connect to DB
Import of gi-uniprot mapping finished
如果上面的步骤没有成功,很有可能是你没按照本教程来,请你删除原来安装的b2gdb,重新来过。删除方法:
mysql& DROP DATABASE b2
mysql -uroot -proot
mysql& use b2
Database changed
+-------------------------------+
| Tables_in_b2gdb & &
+-------------------------------+
| assoc_rel & &
| association & &
| association_isoform & &
| association_property & &
| association_qualifier & &
| association_species_qualifier |
| db & & &
| dbxref & &
| evidence & &
| evidence_dbxref & &
| gene2accession & &
| gene_info & &
| gene_product & &
| gene_product_ancestor & &
| gene_product_count & &
| gene_product_dbxref & &
| gene_product_homology & &
| gene_product_homolset & &
| gene_product_phylotree & &
| gene_product_property & &
| gene_product_seq & &
| gene_product_subset & &
| gene_product_synonym & &
| gi2uniprot & &
| graph_path & &
| graph_path2term & &
| homolset & &
| instance_data & &
| intersection_of & &
| phylotree & &
| phylotree_property & &
| relation_composition & &
| relation_properties & &
| seq & & &
| seq_dbxref & &
| seq_property & &
| source_audit & &
| species & &
| term & &
| term2term & &
| term2term_metadata & &
| term_audit & &
| term_dbxref & &
| term_definition & &
| term_property & &
| term_subset & &
| term_synonym & &
+-------------------------------+
47 rows in set (0.00 sec)
运行官方的例子b2g4pipe
/data/blast2go/b2g4pipe_v2.5.zip并解压。
配置b2gPipe.properties文件中b2gdb信息:(打开那个文件夹,进行如下修改)
& & &// GO and
B2G Data Access Basic
& Dbacces.dbname=b2gdb
&Dbacces.dbhost=localhost:3306
&Dbacces.dbuser=blast2go
& Dbacces.dbpasswd=blast4it
进入到b2g4pipe目录,运行自带例子。
sh ./runPipeExample.sh
java -Xmx1000m -cp *:ext/*:
es.blast2go.prog.B2GAnnotPipe
&runPipeExample.sh文件的内容:
#!/bin/bash
java -Xmx1000m -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe &in
10_BlastResults_2011.xml &out results/myproject &prop
b2gPipe.properties &annot &dat &img &ips &annex &goslim &wiki
html_template.html &v
参数详解:
Xms和Xmx分别表示最小和最大使用Java内存,单位为MB,如果序列数大于2000条,建议用这个参数。
&输入的Blast的结果,格式为XML。所有序列的Blast结果都在一个XML文件中。
-out 输出结果的前缀。如果不给,默认是的输入文件的前缀名字。
-prop 后面接的是Blast2Go的配置文件。默认为./
b2gPipe.properties。正常运行Blast2Go需要正确设定该配置文件。主要填入较新的Blast2Go数据库的信息:数据库的访问IP,数据库的名称,用户和密码。
-v &在终端显示应用信息
-annot 产生B2G注释文件,文件的后缀名为.ANNOT
-dat &生成B2G二进制的数据文件(blast2go
project)结果,该文件以.dat为后缀。这一步特别消耗内存,因为所有数据需要先保存在内存中,最后一步再写出来。
-img &生成图片,仅仅在有参数-dat时才生成图片
&后面接interpro结果的文件夹。该文件夹内的为每条序列的Interpro注释结果,其文件以序列
&号.xml来命名。如果所有的序列在一个xml文件,可以吗?
-wiki &产生一个wiki文件,根据给的模板。
-annex &运行Annex步骤
&将GO注释转换为GoSlim版本。运行GoSlim需要相关GoSlim文件支持。
命令行仅能得到GO注释,而不能进行其他统计分析,以及富集分析。
blast2go用途就是讲NR注释和interpro注释转化为GO注释。
其内容如下,也可以直接在命令行输入,:
不到一分钟运行结束。
8运行图形界面
在自己的安装了java(安装方法请google,记得设置环境变量PATH、CLASSPATH)的电脑(也可以通过VNC远程连接服务器)上直接运行命令java
-cp *:ext/*: es.blast2go.Blast2GO或者,将其写入文件Blast2GO_GUI.sh
#!/bin/bash
# Windows中不要上面这行!!!!!!!!!!!!!
# -Xmx1024M 指定java最大可使用内存,根据情况更改
java -Xmx1024M -cp *:ext/*: es.blast2go.Blast2GO
# Windows中把冒号改成分号!!!!!!!!!!!!!
# java -Xmx1024M -cp *;ext/*; es.blast2go.Blast2GO
进入到b2g4pipe目录,运行脚本
sh ./Blast2GO_GUI.sh
进入图形界面后,配置数据库:菜单栏点击“Tools”,最后一个“DB
configuration”,更改Host为localhost,DB
name为b2gdb,然后点击播放按钮(指向右边的三角形)生效,下次启动程序仍然有效。
sh ./Blast2GO_GUI.sh
进入图形界面后,配置数据库:菜单栏点击“Tools”,最后一个“DB
configuration”,更改Host为localhost,DB
name为b2gdb,然后点击播放按钮(指向右边的三角形)生效,下次启动程序仍然有效。
9数据库更新
,导入数据中断的解决方案:
9.1 assocdb-data数据的更新:&
下载解压新的assocdb-data文件后,
mysql -s -h localhost -uroot -proot b2gdb &
go_201307-assocdb-data
不用担心与旧的数据冲突,它们会被自动删除然后更新。
9.2 gene2accession、gene_info、idmapping.tb的更新:
由于它们是以导入数据文件的方式导入数据库,需要登陆到数据库中,手动清空对应的原来数据表中的数据:
$ mysql -u root -p
Enter password:&
&mysql& use b2
Database changed
mysql& truncate table gene2
Query OK, 0 rows affected (16.67 sec)
mysql& truncate table gene_
Query OK, 0 rows affected (2 min 2.49 sec)
&mysql& truncate table gi2
Query OK, 0 rows affected (0.00 sec)
mysql& quit
再开始导入数据
10删除数据库
mysql& DROP DATABASE b2 删除我安装的数据库
ps:尽管现在开始运行了,但有的地方仍然糊里糊涂的,有待进一步的挖掘
& & 参考网页:
blast2go官网
:/b2glaunch/resources/35-localb2gdb
沉默是金的博客:
http://www.ncrna.net/blast2go-localization-tutorial/
爪爪的博客: & &
http://blog.shenwei.me/local-blast2go-installation/
无穷个大神的帖子
201417补充:
也不知道怎么回事,go的注释不好使,我又重新装了一遍,这次是按照爪爪的博客,强烈推荐一下他的博客,安装起来非常简单,因为他把过程都放在一块来执行了,就一步,不像我遮掩这么麻烦。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 java 找不到符号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信