小编Dav*_*veM的帖子

什么是JAR文件的正确内部结构

这是一个非常愚蠢的问题,我无法回答这个问题.

背景.

我正在使用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用于主要的外部包,将它们连接在一起......但是现在我只是希望这样做,因为它的工作原理.

我可以根据需要提供完整的来源或任何其他信息.

提前致谢...

大卫

java eclipse ant manifest.mf

6
推荐指数
1
解决办法
1万
查看次数

eclipse中的Maven java项目没有在同一个包中看到类

我刚刚开始使用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来解决我的问题吗?

java eclipse maven

3
推荐指数
1
解决办法
2万
查看次数

Fossil添加外部目录

我在这里已经阅读了一些问题和答案,但它完全不符合我的情况.

我想把我所有的化石回收都放在一个地方.

所以我有

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)

如果我能做到这一点,任何人都有任何想法?

提前致谢

大卫

fossil

3
推荐指数
1
解决办法
249
查看次数

VBA功能不起作用,返回错误

我有一个问题,我一直试图用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)

ms-access vba

2
推荐指数
1
解决办法
1937
查看次数

链接异常是有效的

在测试类时,我发现我的类构造函数可以采取"非法参数".构造函数期待一个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)

java exception-handling

2
推荐指数
1
解决办法
188
查看次数

带有expected = exception的Java测试失败,出现断言错误

我遇到了测试用例的问题.

正在测试的方法有一个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.

我在这次测试中做错了什么?

谢谢你的想法.

大卫

java junit exception

1
推荐指数
1
解决办法
6131
查看次数

比较TreeMap内容会给出错误的答案

我在另一个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)

java dictionary hashcode treemap compareto

0
推荐指数
1
解决办法
1678
查看次数

字符串连接不起作用,或者它是一个错误

我编写了一些代码并使用了一个字符串,我使用+ =连接(因为我只做了几次.

后来我使用了另一个字符串并使用了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工作正常.

大卫.

java string

0
推荐指数
1
解决办法
1482
查看次数

eclipse警告:最后块无法正常完成

我有一些代码会抛出一个潜在的错误,我会抓住这些,然后跳进一个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)

java eclipse try-catch-finally

-3
推荐指数
2
解决办法
3752
查看次数