这是一个非常愚蠢的问题,我无法回答这个问题.
背景.
我正在使用Eclipse(带有一个ANT插件,在XP终端上).
我刚刚开始玩ANT,在[jar]指令中我正在设置完成的JAR文件的位置,当我'解压缩'文件时,我得到以下内容
META-INF/MANIFEST.MF MyMainFile.class
这与oracle网站上的内部结构一致.(这里http://docs.oracle.com/javase/tutorial/deployment/jar/view.html)
但是当我尝试运行我的文件时,我得到一个'主要类未找到'错误?
我看过其他一些帖子,其中人们已经"解压缩"了JAR文件并最终得到了以下结构......
META-INF/MANIFEST.MF dtvcontrol/DTVControlApp.class
(从这里http://www.coderanch.com/t/528312/java/java/standalone-application)
所以我应该得到一个结构,其中我的类文件位于反映包名称的目录中...例如
META-INF/MANIFEST.MF MyPackage/MyMainFile.class
如果是这样,为什么我使用ANT得到错误的结构,或者为什么有2个不同的"正确"内部结构?(如何为每个/控制我得到的东西指定main-class和classpath)
如果你感兴趣,在MANIFEST文件中声明(使用ANT构建)[attribute name ="Main-Class"value ="MyPackage.MyMainFile"/]
正在开发的包的目录结构如下......
/ JavaDev/MyTestPackage/src(包含源文件)// JavaDev/MyTestPackage/bin(包含来自eclipse的类文件,或来自ANT JAVAC任务,我是否将其命名为错误?我应该将其命名为build吗?)
除此之外,当我创建jar时,我没有将其命名为'MyTestPackage.jar',但只是'test.jar'可能导致问题?我并不认为我已经很好地理解了[main-class]定义的东西是什么.
除此之外......
'MyTestPackage'实际上是我在别处使用的一个小的可视化错误消息库,我有一个第二个文件,它有一个用于测试的主类.因此它指向各种库(我需要将所有SWT库复制到指定的目录吗?)
我已经阅读过某个地方,如果我将库加载到我的主类(我显然是打开窗口),那么如果我使用它们,尝试运行程序将失败'未找到主类',添加也是如此在任何'静态最终'成员(我用于错误的登录).
"静态最终"问题......我试图在ANT中调整类路径,并且我为Log4J和我使用的"包装器"连接带来了一些其他错误(这与它的导入很差),但是库存在应该在类路径中设置的位置).
我觉得我差不多......但不完全......
我正在为我正在创建的小型"图书馆项目"这样做,目的是将MAVAN用于主要的外部包,将它们连接在一起......但是现在我只是希望这样做,因为它的工作原理.
我可以根据需要提供完整的来源或任何其他信息.
提前致谢...
大卫
我刚刚开始使用maven来尝试构建一个多模块项目.
除了2个小问题外,一切都会好的.
使用eclipse向导创建一个"简单J2EE"原型的新maven项目由于eclipse中的错误而失败,因此在查找原型时它会忽略代理设置(https://bugs.eclipse.org/bugs/show_bug.cgi? ID = 348893)
解决方案是在命令行上创建我的项目,然后将生成的文件结构复制到我工作区内的"简单maven"项目中 - 导入项目也失败了!
然而,我真正的问题如下
当我点击项目文件夹并"创建一个新的java类"时,它将该类放在错误的位置,根据它应该在maven架构中的位置(我选择了错误的选项吗?).所以我动了它.
所以现在我创建了第二个类,它将第一个类作为成员.这两个类显然位于同一个包名称空间中.但我无法从第二个看到成员类的任何方法.
我猜我在我的POM或我的结构中做错了什么.
但我不知道什么,也不知道你可能需要什么信息来帮助我解决它.
现在我已经恢复在eclipse中创建我的子模块作为一个单独的包,使用ANT和各种eclipse工具指向所需的库等.然后当我完成测试时,我将项目转换为'maven'项目.在我完成此操作后,我的父POM和子POM都在eclipse中验证了OK.但同样,如果我决定来扩展功能,并添加一个新的类来我模块类文件在错误的地方结束了,我无法看到它(或从他们这个新类),我的其他类.
请帮忙.我喜欢Maven的想法,并用它来控制我的依赖关系,顺便说一下我要去ANT,也许可以学习IVY用于依赖控制(尽管我对所有人都有点闷闷不乐让maven发挥作用的斗争只是把它扔掉!)
我应该坚持使用ANT/IVY并忘记maven,但是为了将来保持maven目录结构?
编辑.
所以我可能错过了一些东西......我只是再次尝试在eclipse中创建一个简单的maven项目,这次我没有选择原型.我把新的'模块'放在父文件夹下面.这不是我一直在做的事情,我在与父母相同的级别创建了一个外部模块的数量.我从父母的有效POM(我的测试模块)中注意到它有一个部分和其他标签.我可以通过将其添加到我的单个模块POM来解决我的问题吗?
我在这里已经阅读了一些问题和答案,但它完全不符合我的情况.
我想把我所有的化石回收都放在一个地方.
所以我有
c:\ Fossil_Repos \有一个用于WebPages_Repo的回购,另一个用于Dev_repo等等等
我想将原始网页和开发页面保存在Fossil_Repos目录的分离目录中,这是我的结构
c:\Fossile_Repos\
c:\DevEnvironment\
c:\WebPageDevelopment\
Run Code Online (Sandbox Code Playgroud)
这种结构似乎并非不合理.
如果来自我的c:\ Fossile_Repos \我运行命令
fossil open Dev_Repo
fossil add c:\DevEnvironment
Run Code Online (Sandbox Code Playgroud)
然后我看到c:\ DevEnvironment下面的所有目录和文件的列表,然后我继续添加
fossil commit -m "first deposit"
Run Code Online (Sandbox Code Playgroud)
并在第一个文件上收到错误消息,指出该文件不存在.请注意,文件路径是正确的(但是它使用文件分隔符的unix方法将目录报告为C:/DevEnvironment/firstFile.xml)
如果我能做到这一点,任何人都有任何想法?
提前致谢
大卫
我有一个问题,我一直试图用MS Access和VBA函数解决几天.
首先,我有一个表如下
姓名=团队
字段主要是文本库,除非另有说明ID(自动编号主键)非Prenom位置TeamID(通过连接Nom,Prenom和Location字段创建)
在我的表单上,我想提取输入Nom,Prenom和Location字段的部分详细信息.然后将其传递回数据库以进入个人的TeamID字段.
提取应采取的形式
TeamID = mid(Location,0,4) & mid(Prenom,0,2) & mid(Nom,0,2à)
但是我意识到我不能把它放到任何领域的属性的'controle source'部分.
所以在经过多次搜索之后,我决定在一个单独的模块中使用一个函数(为了在我的大量表上创建'明智的'索引值,我经常连接,我发现自动编号主键不是非常用户友好,或自我解释.
所以在我的数据库文件中,我创建了一个带有public函数的模块(名为getInfo)
Public Function getID() As String
Dim r As String
Dim i As String
i = "Twenty"
Run Code Online (Sandbox Code Playgroud)
以下是我尝试过的一些选项....
'r = VBA.Strings.UCase$(String:=i) 'turning the value of i to uppercase
getID = r 'returns "TWENTY" as expected
Run Code Online (Sandbox Code Playgroud)
要么
'r = VBA.Strings.Mid$("TWENTY", 0, 2)
getID = r 'error and highlights above line?
Run Code Online (Sandbox Code Playgroud)
要么
'r = StrReverse(i)
getID= r 'again error and highlights above line
getID = …Run Code Online (Sandbox Code Playgroud) 在测试类时,我发现我的类构造函数可以采取"非法参数".构造函数期待一个URI.显然,如果没有任何迹象表明传递的参数是一个URI,那么它会抛出一个IllegalArgumentException.
我的构造函数最初测试了传递的参数,看它是否是一个有效的URI(通过从中创建一个文件).然后我修改了这个以尝试创建文件并捕获IllegalArgumentException.在我的catch块体中,我只是这样做:
throw new URISyntaxException(passedArgument, message)
Run Code Online (Sandbox Code Playgroud)
这是捕获可能引发的异常的有效方法,还是应该以其他方式执行?
另外,当我在测试时发现这个问题时,我是否有理由简单地修改代码以抛出我期望的异常(哪个更明显的错误呈现给用户,并放入日志中)?
编辑1:在回复评论时,这是我的代码示例:
public myClass (String fileName) throws URISyntaxException {
try {
fileToRead = new File(fileName);
if ( !fileToRead.canRead() ) { //confirm we can read the passed file
// if not, throw a URI error
throw new URISyntaxException(fileName, 'bad filename passed, please check path and try again');
}
} catch ( IllegalArgumentException e ) {
throw new URISyntaxException(fileName, 'bad filename passed, please check path and try again'); …Run Code Online (Sandbox Code Playgroud) 我遇到了测试用例的问题.
正在测试的方法有一个try/catch,它可以捕获MalformedURLException但是在测试期间,由于需要MalformedURLException的Junit AssertionError而导致失败.但我无法找出实际投掷的内容!这是我的代码(在eclipse中创建为MWE).
我想测试的方法
public void throwMalFormedURLException(){
String s = new String("www.google.com");
try{
url = new URL(s);
}catch (Exception e){
e.printStackTrace();
e.getClass();
e.getCause();
}
}
Run Code Online (Sandbox Code Playgroud)
测试方法
@Test (expected = MalformedURLException.class)
public void testThrowMalFormedURLException() {
MWE testClass = new MWE();
testClass.throwMalFormedURLException();
System.out.println("End of test");
}
Run Code Online (Sandbox Code Playgroud)
这是控制台中的输出
测试结束错误的详细信息如下:java.net.MalformedURLException:无协议:www.google.com
at java.net.URL.(URL.java:593)
at java.net.URL.(URL.java:490)
at java.net.URL.(URL.java:439)
在MWE.throwMalFormedURLException(MWE.java:12)
的testMWE.testThrowMalFormedURLException(testMWE.java:12)
在Junit控制台中,它说:
java.lang.AssertionError:预期的异常:Java.net.MalformedURLException
但Junit报告失败,即使控制台告诉我我有一个MalformedURLException.
我在这次测试中做错了什么?
谢谢你的想法.
大卫
我在另一个TreeMap中使用TreeMap作为"键"
即
TreeMap<TreeMap<String, String>, Object>
Run Code Online (Sandbox Code Playgroud)
在我的代码中,'object'是一个个人构造,但是对于这种情况,我使用了一个字符串.
我创建了一对TreeMaps来测试TreeMap.CompareTo()和TreeMap.HashCode()方法.这从以下开始......
public class TreeMapTest
public void testTreeMap()
{
TreeMap<String, String> first = new TreeMap<String, String>();
TreeMap<String, String> second = new TreeMap<String, String>();
first.put("one", "une");
first.put("two", "deux");
first.put("three", "trois");
second.put("une", "one");
second.put("deux", "two");
second.put("trois", "three");
TreeMap<TreeMap<String, String>, String> english = new TreeMap<TreeMap<String, String>, String>();
TreeMap<TreeMap<String, String>, String> french = new TreeMap<TreeMap<String, String>, String>();
english.put(first, "english");
french.put(second, "french");
Run Code Online (Sandbox Code Playgroud)
从这里我现在调用英语项目来查看它是否包含密钥
if (english.containsKey(second))
{
System.out.println("english contains the key");
//throws error of ClassCastException: Java.util.TreeMap cannot …Run Code Online (Sandbox Code Playgroud) 我编写了一些代码并使用了一个字符串,我使用+ =连接(因为我只做了几次.
后来我使用了另一个字符串并使用了concat()函数.连接不起作用.
所以我在Junit中写了一个小方法(用eclipse)......
@Test
public void StingConcatTest(){
String str = "";
str += "hello ";
str += " and goodbye";
String conc="";
conc.concat("hello ");
conc.concat(" and goodbye");
System.out.println("str is: " + str + "\nconc is: "+ conc);
Run Code Online (Sandbox Code Playgroud)
输出是......
str is: hello and goodbye
conc is:
Run Code Online (Sandbox Code Playgroud)
所以要么我疯了,我做错了(最有可能),JUNIT有问题,或者我的JRE/eclipse有问题.
请注意,stringbuilders工作正常.
大卫.
我有一些代码会抛出一个潜在的错误,我会抓住这些,然后跳进一个finally块,这里是'伪'形式.
private boolean myMethod(ResultSet rs1, ResultSet rs2){
Vector<String> temp = new Vector<String>();
try{
//add info into temp while condition is true
while(true){temp.add(information);}//potentially throws an SQL error
//test my temo object for some codition
if(false){throw InternalError();}
}catch (SQLException e){
//send error message
}
catch (InternalError e){
//send error message
}
finally{
//whatever happens I need to send a result of some sort!
if(temp.size() > 1){
//create class member variable from this info
}
//send a message explaining that an …Run Code Online (Sandbox Code Playgroud)