小编eck*_*kes的帖子

如何使用带有apache VFS的JCIFS来访问SMB URL?

我正在尝试使用smb URL访问本地计算机上的文件夹.我的项目使用的是jar:commons-vfs2-2.0.jar和jcifs-1.3.17.jar(以及所有其他必需的jar).其中的代码是:

public static void main(String[] args) throws FileSystemException {
    jcifs.Config.registerSmbURLHandler();
    StaticUserAuthenticator auth = new StaticUserAuthenticator(<domain>,<user>,<password>);
    FileSystemOptions opts = new FileSystemOptions(); 
    DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);
    FileSystemManager fs = VFS.getManager();
    FileObject smbFile = fs.resolveFile("smb://10.0.2.2/TimeOut/");
    System.out.println(smbFile.exists() + " " + smbFile.getContent().getLastModifiedTime());
}
Run Code Online (Sandbox Code Playgroud)

我收到了例外:

线程"main"中的异常org.apache.commons.vfs2.FileSystemException:无法确定文件类型"smb://10.0.2.2/TimeOut".at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:505)位于com.newsway.tests.VfsTest的org.apache.commons.vfs2.provider.AbstractFileObject.exists(AbstractFileObject.java:477) .main(VfsTest.java:23)引起:jcifs.smb.SmbAuthException:登录失败:帐户当前已禁用.在jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:546)jcifs.smb.SmbTransport.send(SmbTransport.java:663)jcifs.smb.SmbSession.sessionSetup(SmbSession.java:390)jcifs.smb. SmbSession.send(SmbSession.java:218)在jcifs.smb.SmbTree.treeConnect(SmbTree.java:176)jcifs.smb.SmbFile.doConnect(SmbFile.java:911)jcifs.smb.SmbFile.connect(SmbFile) .java:954)jcifs.smb.SmbFile.open(SmbFile.java:880)jcifs.smb.SmbFile.open(SmbFile.java:972)jcifs.smb.SmbFile.open(SmbFile.java:1006)在jcifs.smb.SmbFileInputStream.(SmbFileInputStream.java:73)jcifs.smb.SmbFileInputStream.(SmbFileInputStream.java:65)at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2844)at org.apache.commons. vfs2.provider.url.UrlFileObject.doGetType(UrlFileObject.java:89)在org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496)

据我所知,相关部分是:登录失败:帐户目前已禁用.

尽管我的用户/密码/域很好,但我正在完成VFS文档页面中定义的内容.

我错过了什么?

java apache smb jcifs apache-commons-vfs

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

在Guava CacheLoader中使刷新的条目无效

我有一个带有a的番石榴缓存CacheLoader.我在一个线程中跟踪一个外部条件,如果发生这种情况,我想refresh()异步所有条目.出于这个原因,我不使用,invalidateAll()因为下一个get()必须等待加载成功.

相反,我遍历缓存中包含的密钥和refresh(k)所有密钥,因为我找不到refreshAll()方法.这是代码(但与问题无关):

    Set<ResourceLoaderKey> keys = resourceLoaderCache.asMap().keySet();
    for(ResourceLoaderKey k : keys)
    {
        resourceLoaderCache.refresh(k);
    }
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,reload()在CacheLoader中可能会检测到资源实际上不再可用.目前,reload()抛出一个适用于该get()案例的ResourceNotFound异常.但它不适用于这种refresh()情况,因为只要reload()失败就会提供旧值.

我现在可以在加载/重新加载方法中捕获未找到的异常并以某种方式使条目无效,但我想知道是否有正式的方法(返回null或null将被记录为警告并被忽略)?能够删除键/缺席值而不是保留占位符对象会很好.

java caching guava

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

Apache Commons 压缩:打开 .tar.gz

我正在开发一个可以从 tar.gz 文件中获取信息的软件,我正在使用 Apache commons-compress 库。但我收到以下错误:

Caused by: java.lang.IllegalArgumentException: Invalid byte 4 at offset 0 in 'O?!?C' len=8
at org.apache.commons.compress.archivers.tar.TarUtils.parseOctal(TarUtils.java:134)
at org.apache.commons.compress.archivers.tar.TarUtils.parseOctalOrBinary(TarUtils.java:166)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:953)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:940)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.<init>(TarArchiveEntry.java:324)
at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:274)
... 2 more
Run Code Online (Sandbox Code Playgroud)

使用的示例 tar.gz 文件是 eclipse-jee-luna-SR1-linux-gtk-x86_64.tar.gz

这是使用 lib 的类:

public class TarGzBuildAdapter extends BuildAdapter {
    public TarGzBuildAdapter(File build) {
        super(build);
    }

    @Override
    public List<ArtifactInfo> getArtifactInfos() throws IOException {
        TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(
                new FileInputStream(this.build));
        TarArchiveEntry tarArchiveEntry;
        List<ArtifactInfo> artifactInfos = new LinkedList<ArtifactInfo>();

        while ((tarArchiveEntry = tarArchiveInputStream.getNextTarEntry()) != null) { …
Run Code Online (Sandbox Code Playgroud)

java apache-commons-compress

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

我该如何记录参数"说"?

无法解决问题:\我应该如何记录第二个参数"说"?因为SonarQube一次又一次地问我这件事.

public class Dogs {

    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(Dogs.class);
    private final String                  name;
    private final String                  says;

    /**
     * The Dogs class.
     *
     * @param name
     *            says. // here the problem
     *
     */
    public Dogs(final String name, final String says) {
        this.name = name;
        this.says = says;
    }

}  
Run Code Online (Sandbox Code Playgroud)

java javadoc

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

错误:此处不允许使用'void'类型

我正在学习使用课程,我的部分任务是制作这个Car课程.我在第6行遇到错误,我尝试打印类中方法的结果.我认为这意味着我正在尝试打印一些不存在的东西,我怀疑这是里程方法.我尝试将其更改为返回里程,但这也无效.有任何想法吗?

public class TestCar {
  public static final void main(String args[]) {

    Car c = new Car ();
    c.moveForward(4);
    System.out.println ("The car went" + c.mileage() + "miles."); // <-- L6
  }
}

class Car {
  public int miles = 2000;
  public void moveForward(int mf) {
    if (miles != 2000) {
        miles += mf;
    }
  }

  public void mileage() {
    System.out.print(miles);
  }
}
Run Code Online (Sandbox Code Playgroud)

java syntax return-type void

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

Java 9 webstart JNLP Service生成IllegalAccess

以下代码(通过JNLP API检索Java Web Start客户端应用程序的基本URL)在Java 8中工作,但在(模块化)Java 9运行时中执行时失败:

Class<?> mclass = Class.forName("javax.jnlp.ServiceManager");
Method lookup = mclass.getMethod("lookup", new Class[]{String.class});
Object basicSvc = lookup.invoke(null, new Object[{"javax.jnlp.BasicService"});
Class<?> sclass = basicSvc.getClass();
Method getCodeBase = sclass.getMethod("getCodeBase", (Class[])null);
URL codebase = (URL)getCodeBase.invoke(basicSvc, (Object[])null); // throws
Run Code Online (Sandbox Code Playgroud)

结果是

java.lang.IllegalAccessException: class app.App cannot access class
  com.sun.jnlp.BasicServiceImpl (in module jdk.javaws) because module
  jdk.javaws does not export com.sun.jnlp to unnamed module @7202a0fa
    at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException
    at java.base/java.lang.reflect.AccessibleObject.checkAccess
    at java.base/java.lang.reflect.Method.invoke
    at app.App.init
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题?

java reflection jnlp java-platform-module-system java-9

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

如何在Oracle数据库中格式化DATETIME?

我需要以这种格式在此列中保存日期时间,如果我从GAMES中选择TIME,则会以此格式显示.但这是错误的.你能帮助我吗 ?

create table GAMES  (
      CIS_HRY              INTEGER                     not null,
      NAZEV                VARCHAR2(30)                not null,
      Date DATE NOT NULL   FORMAT 'YYYY-MM-DD',
      TIME DATE NOT NULL   FORMAT 'HH24: MI: SS',
      POPIS                  CLOB,
   constraint PK_GAMES primary key (CIS_HRY)
);
Run Code Online (Sandbox Code Playgroud)

sql database oracle date create-table

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

未找到AWS CLI冰川命令

我收到"无效选择"错误.

ubuntu@server:/home/foo$ aws glacier
usage: aws [options] <command> <subcommand> [parameters]
aws: error: argument command: Invalid choice, valid choices are:

autoscaling                              | cloudformation
cloudfront                               | cloudsearch
cloudtrail                               | cloudwatch
datapipeline                             | directconnect
dynamodb                                 | ec2
elasticache                              | elasticbeanstalk
elastictranscoder                        | elb
emr                                      | iam
importexport                             | kinesis
opsworks                                 | rds
redshift                                 | route53
ses                                      | sns
sqs                                      | storagegateway
sts                                      | support
swf                                      | s3api
s3                                       | configure
help


ubuntu@server:/home/foo$ aws --version
aws-cli/1.2.9 Python/3.4.0 Linux/3.13.0-65-generic
Run Code Online (Sandbox Code Playgroud)

以前我使用以下方法安装它: ubuntu@server:/home/foo$ sudo apt-get install awscli …

amazon-web-services amazon-glacier aws-cli

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

下面两个不同的代码为我提供了Java中的两个不同的输出

参见下面的两个代码,让我知道为什么它像Java语言那样打印

BufferedReader br = new BufferedReader(new FileReader("file path"));
while(br.readLine()!= null) {
    System.out.println(br.readLine());
}
br.close();
Run Code Online (Sandbox Code Playgroud)

此代码不能打印完整的文件内容,但是,如果我使用下面的代码,它将打印文件的完整内容..请解释

BufferedReader br = new BufferedReader(new FileReader("filepath"));
String str;
while((str=br.readLine())!= null) {
    System.out.println(str);
}
br.close();
Run Code Online (Sandbox Code Playgroud)

java readline

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